Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


nomadnet/ui/textui/Network.py 79879c4e77ffb30ea746b1b97b74dcbe4f3bbca9 (79879c4e) Text, 75.22 KB

Tff7b72import T7ee787RNS
Tff7b72import T7ee787urwid
Tff7b72import T7ee787nomadnet
Tff7b72import T7ee787time
Tff7b72import T7ee787threading
Tff7b72from T7ee787datetime Tff7b72import Te6edf3datetime
Tff7b72from T7ee787nomadnetT7ee787.T7ee787Directory Tff7b72import Te6edf3DirectoryEntry
Tff7b72from T7ee787nomadnetT7ee787.T7ee787vendorT7ee787.T7ee787additional_urwid_widgets Tff7b72import Te6edf3IndicativeListBoxTb4b4b4, Te6edf3MODIFIER_KEY
Tff7b72from T7ee787nomadnetT7ee787.T7ee787util Tff7b72import Te6edf3strip_modifiers
Tff7b72from T7ee787nomadnetT7ee787.T7ee787util Tff7b72import Te6edf3sanitize_name

Tff7b72from T7ee787.T7ee787Browser Tff7b72import Te6edf3Browser
Tff7b72from T7ee787.T7ee787ReadlineEdit Tff7b72import Te6edf3ReadlineEdit

Tff7b72class T56d364NetworkDisplayShortcutsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Te6edf3g Tff7b72= Te6edf3appTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs

Te6edf3shortcut_text Tff7b72= Ta5d6ff"Ta5d6ff[C-l] Nodes/Announces [C-x] Remove [C-w] Disconnect [C-d] Back [C-f] Forward [C-r] Reload [C-u] URL Ta5d6ff"
Tff7b72if Te6edf3appTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6fftextuiTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffclipboard_copyTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3shortcut_text Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff[C-y] Copy Ta5d6ff"
Te6edf3shortcut_text Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff[C-g] Fullscreen [C-s / C-b] Save NodeTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Te6edf3shortcut_textTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffshortcutbarTa5d6ff"Tb4b4b4)

Tff7b72class T56d364DialogLineBoxTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffescTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffupdate_conversation_listTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72return Tffa657superTb4b4b4(Te6edf3DialogLineBoxTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)


Tff7b72class T56d364ListEntryTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4)Tb4b4b4:
Te6edf3_selectable Tff7b72= Tff7b72True

Te6edf3signals Tff7b72= Tb4b4b4[Ta5d6ff"Ta5d6ffclickTa5d6ff"Tb4b4b4]

Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
T8b949e"""
Send 'click' signal on 'activate' command.
"""
Tff7b72if Tff7b72selfTff7b72.Td2a8ff_command_mapTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72!= Te6edf3urwidTff7b72.Td2a8ffACTIVATETb4b4b4:
Tff7b72return Te6edf3key

Tff7b72selfTff7b72.Td2a8ff_emitTb4b4b4(Ta5d6ff'Ta5d6ffclickTa5d6ff'Tb4b4b4)

Tff7b72def Td2a8ffmouse_eventTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3eventTb4b4b4, Te6edf3buttonTb4b4b4, Te6edf3xTb4b4b4, Te6edf3yTb4b4b4, Te6edf3focusTb4b4b4)Tb4b4b4:
T8b949e"""
Send 'click' signal on button 1 press.
"""
Tff7b72if Te6edf3button Tff7b72!= T79c0ff1 Tff7b72or Tff7b72not Te6edf3urwidTff7b72.Td2a8ffutilTff7b72.Td2a8ffis_mouse_pressTb4b4b4(Te6edf3eventTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72False

Tff7b72selfTff7b72.Td2a8ff_emitTb4b4b4(Ta5d6ff'Ta5d6ffclickTa5d6ff'Tb4b4b4)
Tff7b72return Tff7b72True


Tff7b72class T56d364AnnounceInfoTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffescTa5d6ff"Tb4b4b4:
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, Te6edf3height_amountTff7b72=T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffannounce_stream_displayTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72return Tffa657superTb4b4b4(Te6edf3AnnounceInfoTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3announceTb4b4b4, Te6edf3parentTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3nomadnetTff7b72.Td2a8ffNomadNetworkAppTff7b72.Td2a8ffget_shared_instanceTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparent Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffnetwork_display
Te6edf3g Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs

Te6edf3source_hash Tff7b72= Te6edf3announceTb4b4b4[T79c0ff1Tb4b4b4]
Te6edf3time_format Tff7b72= Te6edf3appTff7b72.Td2a8fftime_format
Te6edf3dt Tff7b72= Te6edf3datetimeTff7b72.Td2a8fffromtimestampTb4b4b4(Te6edf3announceTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)
Te6edf3ts_string Tff7b72= Te6edf3dtTff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3time_formatTb4b4b4)
Te6edf3trust_level Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8fftrust_levelTb4b4b4(Te6edf3source_hashTb4b4b4)
Te6edf3trust_str Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3display_str Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffsimplest_display_strTb4b4b4(Te6edf3source_hashTb4b4b4)
Te6edf3addr_str Tff7b72= Ta5d6ff"Ta5d6ff<Ta5d6ff"Tff7b72+Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Te6edf3source_hashTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff>Ta5d6ff"
Te6edf3info_type Tff7b72= Te6edf3announceTb4b4b4[T79c0ff3Tb4b4b4]

Te6edf3is_node Tff7b72= Tff7b72False
Te6edf3is_pn Tff7b72= Tff7b72False
Tff7b72if Te6edf3info_type Tff7b72== Ta5d6ff"Ta5d6ffnodeTa5d6ff" Tff7b72or Te6edf3info_type Tff7b72== Tff7b72TrueTb4b4b4:
Te6edf3type_string Tff7b72= Ta5d6ff"Ta5d6ffNomad Network Node Ta5d6ff" Tff7b72+ Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffnodeTa5d6ff"Tb4b4b4]
Te6edf3is_node Tff7b72= Tff7b72True
Tff7b72elif Te6edf3info_type Tff7b72== Ta5d6ff"Ta5d6ffpnTa5d6ff"Tb4b4b4:
Te6edf3type_string Tff7b72= Ta5d6ff"Ta5d6ffLXMF Propagation Node Ta5d6ff" Tff7b72+ Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4]
Te6edf3is_pn Tff7b72= Tff7b72True
Tff7b72elif Te6edf3info_type Tff7b72== Ta5d6ff"Ta5d6ffpeerTa5d6ff" Tff7b72or Te6edf3info_type Tff7b72== Tff7b72FalseTb4b4b4:
Te6edf3type_string Tff7b72= Ta5d6ff"Ta5d6ffPeer Ta5d6ff" Tff7b72+ Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffpeerTa5d6ff"Tb4b4b4]

Tff7b72tryTb4b4b4:
Te6edf3data_str Tff7b72= Te6edf3strip_modifiersTb4b4b4(Te6edf3announceTb4b4b4[T79c0ff2Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3data_style Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Te6edf3trust_level Tff7b72!= Te6edf3DirectoryEntryTff7b72.Td2a8ffTRUSTED Tff7b72and Tffa657lenTb4b4b4(Te6edf3data_strTb4b4b4) Tff7b72> T79c0ff32Tb4b4b4:
Te6edf3data_str Tff7b72= Te6edf3data_strTb4b4b4[Tb4b4b4:T79c0ff32Tb4b4b4]Tff7b72+Ta5d6ff"Ta5d6ff [...]Ta5d6ff"
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3data_str Tff7b72= Ta5d6ff"Ta5d6ffDecode failedTa5d6ff"
Te6edf3data_style Tff7b72= Ta5d6ff"Ta5d6fflist_untrustedTa5d6ff"


Tff7b72if Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffUNTRUSTEDTb4b4b4:
Te6edf3trust_str Tff7b72= Ta5d6ff"Ta5d6ffUntrustedTa5d6ff"
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffcrossTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_untrustedTa5d6ff"
Tff7b72elif Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffUNKNOWNTb4b4b4:
Te6edf3trust_str Tff7b72= Ta5d6ff"Ta5d6ffUnknownTa5d6ff"
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffunknownTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_unknownTa5d6ff"
Tff7b72elif Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffTRUSTEDTb4b4b4:
Te6edf3trust_str Tff7b72= Ta5d6ff"Ta5d6ffTrustedTa5d6ff"
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffcheckTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_trustedTa5d6ff"
Tff7b72elif Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffWARNINGTb4b4b4:
Te6edf3trust_str Tff7b72= Ta5d6ff"Ta5d6ffWarningTa5d6ff"
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffwarningTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_warningTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3trust_str Tff7b72= Ta5d6ff"Ta5d6ffWarningTa5d6ff"
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffwarningTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_untrustedTa5d6ff"

Tff7b72def Td2a8ffshow_announce_streamTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, Te6edf3height_amountTff7b72=T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffannounce_stream_displayTb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72def Td2a8ffconnectTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffbrowserTff7b72.Td2a8ffretrieve_urlTb4b4b4(Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Te6edf3source_hashTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4)
Te6edf3show_announce_streamTb4b4b4(Tff7b72NoneTb4b4b4)

Tff7b72def Td2a8ffsave_nodeTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Te6edf3node_entry Tff7b72= Te6edf3DirectoryEntryTb4b4b4(Te6edf3source_hashTb4b4b4, Te6edf3display_nameTff7b72=Te6edf3data_strTb4b4b4, Te6edf3trust_levelTff7b72=Te6edf3trust_levelTb4b4b4, Te6edf3hosts_nodeTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffrememberTb4b4b4(Te6edf3node_entryTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffnetwork_displayTff7b72.Td2a8ffdirectory_change_callbackTb4b4b4(Tb4b4b4)
Te6edf3show_announce_streamTb4b4b4(Tff7b72NoneTb4b4b4)

Tff7b72if Te6edf3is_nodeTb4b4b4:
Te6edf3node_ident Tff7b72= Te6edf3RNSTff7b72.Td2a8ffIdentityTff7b72.Td2a8ffrecallTb4b4b4(Te6edf3source_hashTb4b4b4)
Tff7b72if Tff7b72not Te6edf3node_identTb4b4b4:
Tff7b72raise Tf85149KeyErrorTb4b4b4(Ta5d6ff"Ta5d6ffCould not recall identity for selected nodeTa5d6ff"Tb4b4b4)

Te6edf3op_hash Tff7b72= Te6edf3RNSTff7b72.Td2a8ffDestinationTff7b72.Td2a8ffhash_from_name_and_identityTb4b4b4(Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4, Te6edf3node_identTb4b4b4)
Te6edf3op_str Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffsimplest_display_strTb4b4b4(Te6edf3op_hashTb4b4b4)

Tff7b72def Td2a8ffmsg_opTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Te6edf3show_announce_streamTb4b4b4(Tff7b72NoneTb4b4b4)
Tff7b72if Te6edf3is_nodeTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3existing_conversations Tff7b72= Te6edf3nomadnetTff7b72.Td2a8ffConversationTff7b72.Td2a8ffconversation_listTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)

Te6edf3source_hash_text Tff7b72= Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Te6edf3op_hashTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)
Te6edf3display_name Tff7b72= Te6edf3op_str

Tff7b72if Tff7b72not Te6edf3source_hash_text Tff7b72in Tb4b4b4[Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72for Te6edf3c Tff7b72in Te6edf3existing_conversationsTb4b4b4]Tb4b4b4:
Te6edf3entry Tff7b72= Te6edf3DirectoryEntryTb4b4b4(Te6edf3source_hashTb4b4b4, Te6edf3display_nameTb4b4b4, Te6edf3trust_levelTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffrememberTb4b4b4(Te6edf3entryTb4b4b4)

Te6edf3new_conversation Tff7b72= Te6edf3nomadnetTff7b72.Td2a8ffConversationTb4b4b4(Te6edf3source_hash_textTb4b4b4, Te6edf3nomadnetTff7b72.Td2a8ffNomadNetworkAppTff7b72.Td2a8ffget_shared_instanceTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3initiatorTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffconversations_displayTff7b72.Td2a8ffupdate_conversation_listTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffconversations_displayTff7b72.Td2a8ffdisplay_conversationTb4b4b4(Tff7b72NoneTb4b4b4, Te6edf3source_hash_textTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffshow_conversationsTb4b4b4(Tff7b72NoneTb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffError while starting conversation from announce. The contained exception was: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)

Tff7b72def Td2a8ffconverseTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Te6edf3show_announce_streamTb4b4b4(Tff7b72NoneTb4b4b4)
Tff7b72tryTb4b4b4:
Te6edf3existing_conversations Tff7b72= Te6edf3nomadnetTff7b72.Td2a8ffConversationTff7b72.Td2a8ffconversation_listTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)

Te6edf3source_hash_text Tff7b72= Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Te6edf3source_hashTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)
Te6edf3display_name Tff7b72= Te6edf3data_str

Tff7b72if Tff7b72not Te6edf3source_hash_text Tff7b72in Tb4b4b4[Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72for Te6edf3c Tff7b72in Te6edf3existing_conversationsTb4b4b4]Tb4b4b4:
Te6edf3entry Tff7b72= Te6edf3DirectoryEntryTb4b4b4(Te6edf3source_hashTb4b4b4, Te6edf3display_nameTb4b4b4, Te6edf3trust_levelTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffrememberTb4b4b4(Te6edf3entryTb4b4b4)

Te6edf3new_conversation Tff7b72= Te6edf3nomadnetTff7b72.Td2a8ffConversationTb4b4b4(Te6edf3source_hash_textTb4b4b4, Te6edf3nomadnetTff7b72.Td2a8ffNomadNetworkAppTff7b72.Td2a8ffget_shared_instanceTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3initiatorTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffconversations_displayTff7b72.Td2a8ffupdate_conversation_listTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffconversations_displayTff7b72.Td2a8ffdisplay_conversationTb4b4b4(Tff7b72NoneTb4b4b4, Te6edf3source_hash_textTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffshow_conversationsTb4b4b4(Tff7b72NoneTb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffError while starting conversation from announce. The contained exception was: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)

Tff7b72def Td2a8ffuse_pnTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Te6edf3show_announce_streamTb4b4b4(Tff7b72NoneTb4b4b4)
Tff7b72tryTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffset_user_selected_propagation_nodeTb4b4b4(Te6edf3source_hashTb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffError while setting active propagation node from announce. The contained exception was: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)

Tff7b72if Te6edf3is_nodeTb4b4b4:
Te6edf3type_button Tff7b72= Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffConnectTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3connectTb4b4b4)Tb4b4b4)
Te6edf3msg_button Tff7b72= Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffMsg OpTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3msg_opTb4b4b4)Tb4b4b4)
Te6edf3save_button Tff7b72= Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffSaveTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3save_nodeTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3is_pnTb4b4b4:
Te6edf3type_button Tff7b72= Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffUse as defaultTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3use_pnTb4b4b4)Tb4b4b4)
Te6edf3save_button Tff7b72= Tff7b72None
Tff7b72elseTb4b4b4:
Te6edf3type_button Tff7b72= Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffConverseTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3converseTb4b4b4)Tb4b4b4)
Te6edf3save_button Tff7b72= Tff7b72None

Tff7b72if Te6edf3is_nodeTb4b4b4:
Te6edf3button_columns Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffBackTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3show_announce_streamTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3type_buttonTb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3msg_buttonTb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3save_buttonTb4b4b4,
Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3button_columns Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffBackTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3show_announce_streamTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3type_buttonTb4b4b4,
Tb4b4b4]Tb4b4b4)

Te6edf3pile_widgets Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72if Te6edf3is_pnTb4b4b4:
Te6edf3pile_widgets Tff7b72= Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffTime : Ta5d6ff"Tff7b72+Te6edf3ts_stringTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffLEFTTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffAddr : Ta5d6ff"Tff7b72+Te6edf3addr_strTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffLEFTTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffType : Ta5d6ff"Tff7b72+Te6edf3type_stringTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffLEFTTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffdivider1Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3button_columns
Tb4b4b4]

Tff7b72elseTb4b4b4:
Te6edf3pile_widgets Tff7b72= Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffTime : Ta5d6ff"Tff7b72+Te6edf3ts_stringTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffLEFTTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffAddr : Ta5d6ff"Tff7b72+Te6edf3addr_strTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffLEFTTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffType : Ta5d6ff"Tff7b72+Te6edf3type_stringTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffLEFTTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffName : Ta5d6ff"Tff7b72+Te6edf3display_strTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffLEFTTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6ffTrust : Ta5d6ff"Tb4b4b4, Tb4b4b4(Te6edf3styleTb4b4b4, Te6edf3trust_strTb4b4b4)Tb4b4b4]Tb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffLEFTTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffdivider1Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6ffAnnounce Data: Tffea00\nTa5d6ff"Tb4b4b4, Tb4b4b4(Te6edf3data_styleTb4b4b4, Te6edf3data_strTb4b4b4)Tb4b4b4]Tb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffLEFTTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffdivider1Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3button_columns
Tb4b4b4]

Tff7b72if Te6edf3is_nodeTb4b4b4:
Te6edf3operator_entry Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffOprtr : Ta5d6ff"Tff7b72+Te6edf3op_strTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffLEFTTb4b4b4)
Te6edf3pile_widgetsTff7b72.Td2a8ffinsertTb4b4b4(T79c0ff4Tb4b4b4, Te6edf3operator_entryTb4b4b4)

Te6edf3pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Te6edf3pile_widgetsTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffFillerTb4b4b4(Te6edf3pileTb4b4b4, Te6edf3valignTff7b72=Te6edf3urwidTff7b72.Td2a8ffTOPTb4b4b4, Te6edf3heightTff7b72=Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffAnnounce InfoTa5d6ff"Tb4b4b4)Tb4b4b4)


Tff7b72class T56d364AnnounceStreamEntryTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4, Te6edf3announceTb4b4b4, Te6edf3delegateTb4b4b4, Te6edf3show_destinationTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Te6edf3full_time_format Tff7b72= Ta5d6ff"Ta5d6ff%Ta5d6ffY-Ta5d6ff%Ta5d6ffm-Tffd700%dTa5d6ff Ta5d6ff%Ta5d6ffH:Ta5d6ff%Ta5d6ffM:Ta5d6ff%Ta5d6ffSTa5d6ff"
Te6edf3date_time_format Tff7b72= Ta5d6ff"Ta5d6ff%Ta5d6ffY-Ta5d6ff%Ta5d6ffm-Tffd700%dTa5d6ff"
Te6edf3time_time_format Tff7b72= Ta5d6ff"Ta5d6ff%Ta5d6ffH:Ta5d6ff%Ta5d6ffM:Ta5d6ff%Ta5d6ffSTa5d6ff"
Te6edf3short_time_format Tff7b72= Ta5d6ff"Ta5d6ff%Ta5d6ffY-Ta5d6ff%Ta5d6ffm-Tffd700%dTa5d6ff Ta5d6ff%Ta5d6ffH:Ta5d6ff%Ta5d6ffMTa5d6ff"
Te6edf3date_only_format Tff7b72= Ta5d6ff"Ta5d6ff%Ta5d6ffY-Ta5d6ff%Ta5d6ffm-Tffd700%dTa5d6ff"

Te6edf3timestamp Tff7b72= Te6edf3announceTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3source_hash Tff7b72= Te6edf3announceTb4b4b4[T79c0ff1Tb4b4b4]
Te6edf3announce_type Tff7b72= Te6edf3announceTb4b4b4[T79c0ff3Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8ffdelegate Tff7b72= Te6edf3delegate
Tff7b72selfTff7b72.Td2a8fftimestamp Tff7b72= Te6edf3timestamp
Te6edf3time_format Tff7b72= Te6edf3appTff7b72.Td2a8fftime_format
Te6edf3dt Tff7b72= Te6edf3datetimeTff7b72.Td2a8fffromtimestampTb4b4b4(Tff7b72selfTff7b72.Td2a8fftimestampTb4b4b4)
Te6edf3dtn Tff7b72= Te6edf3datetimeTff7b72.Td2a8fffromtimestampTb4b4b4(Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3g Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs

Tff7b72if Te6edf3dtTff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3date_time_formatTb4b4b4) Tff7b72== Te6edf3dtnTff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3date_time_formatTb4b4b4)Tb4b4b4:
Te6edf3ts_string Tff7b72= Te6edf3dtTff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3time_time_formatTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3ts_string Tff7b72= Te6edf3dtTff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3date_only_formatTb4b4b4)

Te6edf3trust_level Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8fftrust_levelTb4b4b4(Te6edf3source_hashTb4b4b4)

Tff7b72def Td2a8ffsanTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6fftextuiTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffsanitize_namesTa5d6ff"Tb4b4b4]Tb4b4b4: Tff7b72return Te6edf3sanitize_nameTb4b4b4(Te6edf3nameTb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72return Te6edf3strip_modifiersTb4b4b4(Te6edf3nameTb4b4b4)
Tff7b72if Te6edf3show_destinationTb4b4b4:
Te6edf3display_str Tff7b72= Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Te6edf3source_hashTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72tryTb4b4b4: Te6edf3display_str Tff7b72= Te6edf3sanTb4b4b4(Te6edf3announceTb4b4b4[T79c0ff2Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72exceptTb4b4b4: Te6edf3display_str Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffsimplest_display_strTb4b4b4(Te6edf3source_hashTb4b4b4)

Tff7b72if Tff7b72not Te6edf3display_strTb4b4b4: Te6edf3display_str Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3source_hashTb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3display_strTb4b4b4) Tff7b72> T79c0ff34Tb4b4b4: Te6edf3display_str Tff7b72= Te6edf3display_strTb4b4b4[Tb4b4b4:T79c0ff34Tb4b4b4] Tff7b72+ Ta5d6ff"Ta5d6ff…Ta5d6ff"

Tff7b72if Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffUNTRUSTEDTb4b4b4:
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffcrossTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_untrustedTa5d6ff"
Te6edf3focus_style Tff7b72= Ta5d6ff"Ta5d6fflist_focus_untrustedTa5d6ff"
Tff7b72elif Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffUNKNOWNTb4b4b4:
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffunknownTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_unknownTa5d6ff"
Te6edf3focus_style Tff7b72= Ta5d6ff"Ta5d6fflist_focusTa5d6ff"
Tff7b72elif Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffTRUSTEDTb4b4b4:
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffcheckTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_trustedTa5d6ff"
Te6edf3focus_style Tff7b72= Ta5d6ff"Ta5d6fflist_focus_trustedTa5d6ff"
Tff7b72elif Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffWARNINGTb4b4b4:
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffwarningTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_warningTa5d6ff"
Te6edf3focus_style Tff7b72= Ta5d6ff"Ta5d6fflist_focusTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffwarningTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_untrustedTa5d6ff"
Te6edf3focus_style Tff7b72= Ta5d6ff"Ta5d6fflist_focus_untrustedTa5d6ff"

Tff7b72if Te6edf3announce_type Tff7b72== Ta5d6ff"Ta5d6ffnodeTa5d6ff" Tff7b72or Te6edf3announce_type Tff7b72== Tff7b72TrueTb4b4b4:
Te6edf3type_symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffnodeTa5d6ff"Tb4b4b4]
Tff7b72elif Te6edf3announce_type Tff7b72== Ta5d6ff"Ta5d6ffpeerTa5d6ff" Tff7b72or Te6edf3announce_type Tff7b72== Tff7b72FalseTb4b4b4:
Te6edf3type_symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffpeerTa5d6ff"Tb4b4b4]
Tff7b72elif Te6edf3announce_type Tff7b72== Ta5d6ff"Ta5d6ffpnTa5d6ff"Tb4b4b4:
Te6edf3type_symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4]

Te6edf3widget Tff7b72= Te6edf3ListEntryTb4b4b4(Te6edf3ts_stringTff7b72+Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72+Te6edf3type_symbolTff7b72+Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72+Te6edf3display_strTb4b4b4)
Te6edf3urwidTff7b72.Td2a8ffconnect_signalTb4b4b4(Te6edf3widgetTb4b4b4, Ta5d6ff"Ta5d6ffclickTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffdisplay_announceTb4b4b4, Te6edf3announceTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3widgetTb4b4b4, Te6edf3styleTb4b4b4, Te6edf3focus_styleTb4b4b4)
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4)

Tff7b72def Td2a8ffdisplay_announceTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3eventTb4b4b4, Te6edf3announceTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3parent Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffnetwork_display
Te6edf3info_widget Tff7b72= Te6edf3AnnounceInfoTb4b4b4(Te6edf3announceTb4b4b4, Te6edf3parentTb4b4b4, Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Te6edf3options Tff7b72= Te6edf3parentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, Te6edf3height_amountTff7b72=T79c0ff1Tb4b4b4)
Te6edf3parentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3info_widgetTb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72except Tf85149KeyError Tff7b72as Te6edf3eTb4b4b4:
Tff7b72def Td2a8ffdismiss_dialogTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffparentTff7b72.Td2a8ffclose_list_dialogsTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffconfirmedTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffclose_reqTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffparentTff7b72.Td2a8ffclose_list_dialogsTb4b4b4(Tb4b4b4)

Te6edf3dialog_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Tffea00\nTa5d6ffKeys requested from networkTffea00\nTa5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4)Tb4b4b4, Te6edf3optionsTb4b4b4)
Te6edf3RNSTff7b72.Td2a8ffTransportTff7b72.Td2a8ffrequest_pathTb4b4b4(Te6edf3announceTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)

Te6edf3confirmed_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffRequest keysTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3confirmedTb4b4b4)

Te6edf3dialog_pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(
Ta5d6ff"Ta5d6ffThe keys for the announced destination could not be recalled. Ta5d6ff"
Ta5d6ff"Ta5d6ffYou can wait for an announce to arrive, or request the keys from the network.Tffea00\nTa5d6ff"Tb4b4b4,
Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3confirmed_buttonTb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffCloseTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3dismiss_dialogTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)
Tb4b4b4]Tb4b4b4)

Te6edf3dialog Tff7b72= Te6edf3ListDialogLineBoxTb4b4b4(
Te6edf3dialog_pileTb4b4b4,
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffKeys UnknownTa5d6ff"
Tb4b4b4)
Te6edf3confirmed_buttonTff7b72.Td2a8ffdialog_pile Tff7b72= Te6edf3dialog_pile
Te6edf3dialogTff7b72.Td2a8ffdelegate Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffparent
Te6edf3bottom Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegate

Te6edf3overlay Tff7b72= Te6edf3urwidTff7b72.Td2a8ffOverlayTb4b4b4(
Te6edf3dialogTb4b4b4,
Te6edf3bottomTb4b4b4,
Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4,
Te6edf3widthTff7b72=Te6edf3urwidTff7b72.Td2a8ffRELATIVE_100Tb4b4b4,
Te6edf3valignTff7b72=Te6edf3urwidTff7b72.Td2a8ffMIDDLETb4b4b4,
Te6edf3heightTff7b72=Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4,
Te6edf3leftTff7b72=T79c0ff2Tb4b4b4,
Te6edf3rightTff7b72=T79c0ff2Tb4b4b4,
Tb4b4b4)

Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3overlayTb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72def Td2a8fftimestampTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8fftimestamp

Tff7b72class T56d364TabButtonTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4)Tb4b4b4:
Te6edf3button_left Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff[Ta5d6ff"Tb4b4b4)
Te6edf3button_right Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff]Ta5d6ff"Tb4b4b4)

Tff7b72class T56d364AnnounceStreamTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4, Te6edf3parentTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8ffparent Tff7b72= Te6edf3parent
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8fftimeout Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6fftextuiTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffanimation_intervalTa5d6ff"Tb4b4b4]Tff7b72*T79c0ff2
Tff7b72selfTff7b72.Td2a8ffilb Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffno_content Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffcurrent_tab Tff7b72= Ta5d6ff"Ta5d6ffnodesTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffshow_destination Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffsearch_text Tff7b72= Ta5d6ff"Ta5d6ff"

Tff7b72selfTff7b72.Td2a8ffadded_entries Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffwidget_list Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72selfTff7b72.Td2a8fftab_nodes Tff7b72= Te6edf3TabButtonTb4b4b4(Ta5d6ff"Ta5d6ffNodes (0)Ta5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8ffshow_nodes_tabTb4b4b4)
Tff7b72selfTff7b72.Td2a8fftab_peers Tff7b72= Te6edf3TabButtonTb4b4b4(Ta5d6ff"Ta5d6ffPeers (0)Ta5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8ffshow_peers_tabTb4b4b4)
Tff7b72selfTff7b72.Td2a8fftab_pn Tff7b72= Te6edf3TabButtonTb4b4b4(Ta5d6ff"Ta5d6ffPropagation Nodes (0)Ta5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8ffshow_pn_tabTb4b4b4)

Tff7b72selfTff7b72.Td2a8fftab_bar Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff1Tb4b4b4, Tff7b72selfTff7b72.Td2a8fftab_nodesTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff1Tb4b4b4, Tff7b72selfTff7b72.Td2a8fftab_peersTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff3Tb4b4b4, Tff7b72selfTff7b72.Td2a8fftab_pnTb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4, Te6edf3dividecharsTff7b72=T79c0ff1Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffsearch_edit Tff7b72= Te6edf3ReadlineEditTb4b4b4(Te6edf3captionTff7b72=Ta5d6ff"Ta5d6ffSearch: Ta5d6ff"Tb4b4b4)
Te6edf3urwidTff7b72.Td2a8ffconnect_signalTb4b4b4(Tff7b72selfTff7b72.Td2a8ffsearch_editTb4b4b4, Ta5d6ff'Ta5d6ffchangeTa5d6ff'Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffon_search_changeTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisplay_toggle Tff7b72= Te6edf3TabButtonTb4b4b4(Ta5d6ff"Ta5d6ffShow: NameTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8fftoggle_display_modeTb4b4b4)

Tff7b72selfTff7b72.Td2a8fffilter_bar Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff2Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffsearch_editTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff1Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffdisplay_toggleTb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4, Te6edf3dividecharsTff7b72=T79c0ff1Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffupdate_widget_listTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffilb Tff7b72= Te6edf3ExceptionHandlingListBoxTb4b4b4(
Tff7b72selfTff7b72.Td2a8ffwidget_listTb4b4b4,
Te6edf3on_selection_changeTff7b72=Tff7b72selfTff7b72.Td2a8fflist_selectionTb4b4b4,
Te6edf3initialization_is_selection_changeTff7b72=Tff7b72FalseTb4b4b4,
T8b949e#modifier_key=MODIFIER_KEY.CTRL,
T8b949e#highlight_offFocus="list_off_focus"
Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffpile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Tb4b4b4(Ta5d6ff'Ta5d6ffpackTa5d6ff'Tb4b4b4, Tff7b72selfTff7b72.Td2a8fftab_barTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff'Ta5d6ffpackTa5d6ff'Tb4b4b4, Tff7b72selfTff7b72.Td2a8fffilter_barTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff1Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffilbTb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffpile
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffAnnounce StreamTa5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffupTa5d6ff" Tff7b72and Tff7b72selfTff7b72.Td2a8ffpileTff7b72.Td2a8fffocus Tff7b72== Tff7b72selfTff7b72.Td2a8fftab_barTb4b4b4:
Te6edf3nomadnetTff7b72.Td2a8ffNomadNetworkAppTff7b72.Td2a8ffget_shared_instanceTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72= Ta5d6ff"Ta5d6ffheaderTa5d6ff"
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffctrl xTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdelete_selected_entryTb4b4b4(Tb4b4b4)

Tff7b72return Tffa657superTb4b4b4(Te6edf3AnnounceStreamTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)

Tff7b72def Td2a8ffon_search_changeTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3widgetTb4b4b4, Te6edf3textTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsearch_text Tff7b72= Te6edf3textTff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffupdate_widget_listTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8fftoggle_display_modeTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffshow_destination Tff7b72= Tff7b72not Tff7b72selfTff7b72.Td2a8ffshow_destination
Tff7b72if Tff7b72selfTff7b72.Td2a8ffshow_destinationTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdisplay_toggleTff7b72.Td2a8ffset_labelTb4b4b4(Ta5d6ff"Ta5d6ffShow: DestTa5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdisplay_toggleTff7b72.Td2a8ffset_labelTb4b4b4(Ta5d6ff"Ta5d6ffShow: NameTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffupdate_widget_listTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffdelete_selected_entryTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3sel Tff7b72= Tff7b72selfTff7b72.Td2a8ffilbTff7b72.Td2a8ffget_selected_itemTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3sel Tff7b72!= Tff7b72None Tff7b72and Tffa657hasattrTb4b4b4(Te6edf3selTb4b4b4, Ta5d6ff"Ta5d6fforiginal_widgetTa5d6ff"Tb4b4b4) Tff7b72and Te6edf3selTff7b72.Td2a8fforiginal_widgetTb4b4b4:
Tff7b72if Tffa657hasattrTb4b4b4(Te6edf3selTff7b72.Td2a8fforiginal_widgetTb4b4b4, Ta5d6ff"Ta5d6fftimestampTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffremove_announce_with_timestampTb4b4b4(Te6edf3selTff7b72.Td2a8fforiginal_widgetTff7b72.Td2a8fftimestampTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffrebuild_widget_listTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffrebuild_widget_listTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffno_content Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffadded_entries Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffwidget_list Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffupdate_widget_listTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffupdate_widget_listTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffwidget_list Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3new_entries Tff7b72= Tb4b4b4[Tb4b4b4]

Te6edf3node_count Tff7b72= T79c0ff0
Te6edf3peer_count Tff7b72= T79c0ff0
Te6edf3pn_count Tff7b72= T79c0ff0

Tff7b72for Te6edf3e Tff7b72in Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffannounce_streamTb4b4b4:
Te6edf3announce_type Tff7b72= Te6edf3eTb4b4b4[T79c0ff3Tb4b4b4]

Tff7b72if Tff7b72selfTff7b72.Td2a8ffsearch_textTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3announce_data Tff7b72= Te6edf3eTb4b4b4[T79c0ff2Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)
Tff7b72exceptTb4b4b4:
Te6edf3announce_data Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsearch_text Tff7b72not Tff7b72in Te6edf3announce_dataTb4b4b4:
Tff7b72continue

Tff7b72if Te6edf3announce_type Tff7b72== Ta5d6ff"Ta5d6ffnodeTa5d6ff" Tff7b72or Te6edf3announce_type Tff7b72== Tff7b72TrueTb4b4b4:
Te6edf3node_count Tff7b72+Tff7b72= T79c0ff1
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcurrent_tab Tff7b72== Ta5d6ff"Ta5d6ffnodesTa5d6ff"Tb4b4b4: Te6edf3new_entriesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3eTb4b4b4)
Tff7b72elif Te6edf3announce_type Tff7b72== Ta5d6ff"Ta5d6ffpeerTa5d6ff" Tff7b72or Te6edf3announce_type Tff7b72== Tff7b72FalseTb4b4b4:
Te6edf3peer_count Tff7b72+Tff7b72= T79c0ff1
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcurrent_tab Tff7b72== Ta5d6ff"Ta5d6ffpeersTa5d6ff"Tb4b4b4: Te6edf3new_entriesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3eTb4b4b4)

Tff7b72elif Te6edf3announce_type Tff7b72== Ta5d6ff"Ta5d6ffpnTa5d6ff"Tb4b4b4:
Te6edf3pn_count Tff7b72+Tff7b72= T79c0ff1
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcurrent_tab Tff7b72== Ta5d6ff"Ta5d6ffpnTa5d6ff"Tb4b4b4: Te6edf3new_entriesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3eTb4b4b4)

Tff7b72for Te6edf3e Tff7b72in Te6edf3new_entriesTb4b4b4:
Te6edf3nw Tff7b72= Te6edf3AnnounceStreamEntryTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Te6edf3eTb4b4b4, Tff7b72selfTb4b4b4, Te6edf3show_destinationTff7b72=Tff7b72selfTff7b72.Td2a8ffshow_destinationTb4b4b4)
Te6edf3nwTff7b72.Td2a8fftimestamp Tff7b72= Te6edf3eTb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffwidget_listTff7b72.Td2a8ffappendTb4b4b4(Te6edf3nwTb4b4b4)

Tff7b72if Tffa657lenTb4b4b4(Te6edf3new_entriesTb4b4b4) Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffno_content Tff7b72= Tff7b72False
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffno_content Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffwidget_list Tff7b72= Tb4b4b4[Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffNo Tffd700{Tff7b72selfTff7b72.Td2a8ffcurrent_tabTffd700}Ta5d6ff announcesTa5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff'Ta5d6ffcenterTa5d6ff'Tb4b4b4)Tb4b4b4]

Tff7b72selfTff7b72.Td2a8fftab_nodesTff7b72.Td2a8ffset_labelTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffNodes (Tffd700{Te6edf3node_countTffd700}Ta5d6ff)Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftab_peersTff7b72.Td2a8ffset_labelTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffPeers (Tffd700{Te6edf3peer_countTffd700}Ta5d6ff)Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftab_pnTff7b72.Td2a8ffset_labelTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffPropagation Nodes (Tffd700{Te6edf3pn_countTffd700}Ta5d6ff)Ta5d6ff"Tb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffilbTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffilbTff7b72.Td2a8ffset_bodyTb4b4b4(Tff7b72selfTff7b72.Td2a8ffwidget_listTb4b4b4)

Tff7b72def Td2a8ffshow_nodes_tabTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffcurrent_tab Tff7b72= Ta5d6ff"Ta5d6ffnodesTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffupdate_widget_listTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffshow_peers_tabTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffcurrent_tab Tff7b72= Ta5d6ff"Ta5d6ffpeersTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffupdate_widget_listTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffshow_pn_tabTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffcurrent_tab Tff7b72= Ta5d6ff"Ta5d6ffpnTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffupdate_widget_listTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8fflist_selectionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3arg1Tb4b4b4, Te6edf3arg2Tb4b4b4)Tb4b4b4:
Tff7b72pass

Tff7b72def Td2a8ffupdateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_widget_listTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffupdate_callbackTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3loopTff7b72=Tff7b72NoneTb4b4b4, Te6edf3user_dataTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdateTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffstartedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(Tff7b72selfTff7b72.Td2a8fftimeoutTb4b4b4, Tff7b72selfTff7b72.Td2a8ffupdate_callbackTb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3was_started Tff7b72= Tff7b72selfTff7b72.Td2a8ffstarted
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72True
Tff7b72if Tff7b72not Te6edf3was_startedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_callbackTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False

Tff7b72class T56d364SelectTextTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4)Tb4b4b4:
Te6edf3_selectable Tff7b72= Tff7b72True

Te6edf3signals Tff7b72= Tb4b4b4[Ta5d6ff"Ta5d6ffclickTa5d6ff"Tb4b4b4]

Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
T8b949e"""
Send 'click' signal on 'activate' command.
"""
Tff7b72if Tff7b72selfTff7b72.Td2a8ff_command_mapTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72!= Te6edf3urwidTff7b72.Td2a8ffACTIVATETb4b4b4:
Tff7b72return Te6edf3key

Tff7b72selfTff7b72.Td2a8ff_emitTb4b4b4(Ta5d6ff'Ta5d6ffclickTa5d6ff'Tb4b4b4)

Tff7b72def Td2a8ffmouse_eventTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3eventTb4b4b4, Te6edf3buttonTb4b4b4, Te6edf3xTb4b4b4, Te6edf3yTb4b4b4, Te6edf3focusTb4b4b4)Tb4b4b4:
T8b949e"""
Send 'click' signal on button 1 press.
"""
Tff7b72if Te6edf3button Tff7b72!= T79c0ff1 Tff7b72or Tff7b72not Te6edf3urwidTff7b72.Td2a8ffutilTff7b72.Td2a8ffis_mouse_pressTb4b4b4(Te6edf3eventTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72False

Tff7b72selfTff7b72.Td2a8ff_emitTb4b4b4(Ta5d6ff'Ta5d6ffclickTa5d6ff'Tb4b4b4)
Tff7b72return Tff7b72True

Tff7b72class T56d364ListDialogLineBoxTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffescTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffclose_list_dialogsTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72return Tffa657superTb4b4b4(Te6edf3ListDialogLineBoxTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)

Tff7b72class T56d364KnownNodeInfoTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffescTa5d6ff"Tb4b4b4:
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, Te6edf3height_amountTff7b72=T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffknown_nodes_displayTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72return Tffa657superTb4b4b4(Te6edf3KnownNodeInfoTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3node_hashTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3nomadnetTff7b72.Td2a8ffNomadNetworkAppTff7b72.Td2a8ffget_shared_instanceTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparent Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffnetwork_display
Tff7b72selfTff7b72.Td2a8ffpn_changed Tff7b72= Tff7b72False
Te6edf3g Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs

Te6edf3source_hash Tff7b72= Te6edf3node_hash
Te6edf3node_ident Tff7b72= Te6edf3RNSTff7b72.Td2a8ffIdentityTff7b72.Td2a8ffrecallTb4b4b4(Te6edf3node_hashTb4b4b4)
Te6edf3time_format Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8fftime_format
Te6edf3trust_level Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8fftrust_levelTb4b4b4(Te6edf3source_hashTb4b4b4)
Te6edf3trust_str Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3node_entry Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8fffindTb4b4b4(Te6edf3source_hashTb4b4b4)
Te6edf3sort_str Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffsort_rankTb4b4b4(Te6edf3source_hashTb4b4b4)
Tff7b72if Te6edf3sort_str Tff7b72== Tff7b72NoneTb4b4b4:
Te6edf3sort_str Tff7b72= Ta5d6ff"Ta5d6ffNoneTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3sort_str Tff7b72= Tffa657strTb4b4b4(Te6edf3sort_strTb4b4b4)

Tff7b72if Te6edf3node_entry Tff7b72== Tff7b72NoneTb4b4b4:
Te6edf3display_str Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffsimplest_display_strTb4b4b4(Te6edf3source_hashTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3display_str Tff7b72= Te6edf3strip_modifiersTb4b4b4(Te6edf3node_entryTff7b72.Td2a8ffdisplay_nameTb4b4b4)

Te6edf3addr_str Tff7b72= Ta5d6ff"Ta5d6ff<Ta5d6ff"Tff7b72+Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Te6edf3source_hashTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff>Ta5d6ff"

Tff7b72if Te6edf3display_str Tff7b72== Tff7b72NoneTb4b4b4:
Te6edf3display_str Tff7b72= Te6edf3addr_str

Te6edf3pn_hash Tff7b72= Te6edf3RNSTff7b72.Td2a8ffDestinationTff7b72.Td2a8ffhash_from_name_and_identityTb4b4b4(Ta5d6ff"Ta5d6fflxmf.propagationTa5d6ff"Tb4b4b4, Te6edf3node_identTb4b4b4)

Tff7b72if Te6edf3node_ident Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3lxmf_addr_str Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4]Tff7b72+Ta5d6ff"Ta5d6ff LXMF Propagation Node Address is Ta5d6ff"Tff7b72+Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3pn_hashTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3lxmf_addr_str Tff7b72= Ta5d6ff"Ta5d6ffNo associated Propagation Node knownTa5d6ff"


Te6edf3type_string Tff7b72= Ta5d6ff"Ta5d6ffNomad Network Node Ta5d6ff" Tff7b72+ Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffnodeTa5d6ff"Tb4b4b4]

Tff7b72if Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffUNTRUSTEDTb4b4b4:
Te6edf3trust_str Tff7b72= Ta5d6ff"Ta5d6ffUntrustedTa5d6ff"
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffcrossTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_untrustedTa5d6ff"
Tff7b72elif Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffUNKNOWNTb4b4b4:
Te6edf3trust_str Tff7b72= Ta5d6ff"Ta5d6ffUnknownTa5d6ff"
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffunknownTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_unknownTa5d6ff"
Tff7b72elif Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffTRUSTEDTb4b4b4:
Te6edf3trust_str Tff7b72= Ta5d6ff"Ta5d6ffTrustedTa5d6ff"
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffcheckTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_trustedTa5d6ff"
Tff7b72elif Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffWARNINGTb4b4b4:
Te6edf3trust_str Tff7b72= Ta5d6ff"Ta5d6ffWarningTa5d6ff"
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffwarningTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_warningTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3trust_str Tff7b72= Ta5d6ff"Ta5d6ffWarningTa5d6ff"
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffwarningTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_untrustedTa5d6ff"

Tff7b72if Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffUNTRUSTEDTb4b4b4:
Te6edf3untrusted_selected Tff7b72= Tff7b72True
Te6edf3unknown_selected Tff7b72= Tff7b72False
Te6edf3trusted_selected Tff7b72= Tff7b72False
Tff7b72elif Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffUNKNOWNTb4b4b4:
Te6edf3untrusted_selected Tff7b72= Tff7b72False
Te6edf3unknown_selected Tff7b72= Tff7b72True
Te6edf3trusted_selected Tff7b72= Tff7b72False
Tff7b72elif Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffTRUSTEDTb4b4b4:
Te6edf3untrusted_selected Tff7b72= Tff7b72False
Te6edf3unknown_selected Tff7b72= Tff7b72False
Te6edf3trusted_selected Tff7b72= Tff7b72True

Te6edf3trust_button_group Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3r_untrusted Tff7b72= Te6edf3urwidTff7b72.Td2a8ffRadioButtonTb4b4b4(Te6edf3trust_button_groupTb4b4b4, Ta5d6ff"Ta5d6ffUntrustedTa5d6ff"Tb4b4b4, Te6edf3stateTff7b72=Te6edf3untrusted_selectedTb4b4b4)
Te6edf3r_unknown Tff7b72= Te6edf3urwidTff7b72.Td2a8ffRadioButtonTb4b4b4(Te6edf3trust_button_groupTb4b4b4, Ta5d6ff"Ta5d6ffUnknownTa5d6ff"Tb4b4b4, Te6edf3stateTff7b72=Te6edf3unknown_selectedTb4b4b4)
Te6edf3r_trusted Tff7b72= Te6edf3urwidTff7b72.Td2a8ffRadioButtonTb4b4b4(Te6edf3trust_button_groupTb4b4b4, Ta5d6ff"Ta5d6ffTrustedTa5d6ff"Tb4b4b4, Te6edf3stateTff7b72=Te6edf3trusted_selectedTb4b4b4)

Te6edf3e_name Tff7b72= Te6edf3ReadlineEditTb4b4b4(Te6edf3captionTff7b72=Ta5d6ff"Ta5d6ffName : Ta5d6ff"Tb4b4b4,Te6edf3edit_textTff7b72=Te6edf3display_strTb4b4b4)
Te6edf3e_sort Tff7b72= Te6edf3ReadlineEditTb4b4b4(Te6edf3captionTff7b72=Ta5d6ff"Ta5d6ffSort Rank : Ta5d6ff"Tb4b4b4,Te6edf3edit_textTff7b72=Te6edf3sort_strTb4b4b4)

Te6edf3node_ident Tff7b72= Te6edf3RNSTff7b72.Td2a8ffIdentityTff7b72.Td2a8ffrecallTb4b4b4(Te6edf3source_hashTb4b4b4)
Te6edf3op_hash Tff7b72= Tff7b72None
Te6edf3op_str Tff7b72= Tff7b72None
Tff7b72if Te6edf3node_ident Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3op_hash Tff7b72= Te6edf3RNSTff7b72.Td2a8ffDestinationTff7b72.Td2a8ffhash_from_name_and_identityTb4b4b4(Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4, Te6edf3node_identTb4b4b4)
Te6edf3op_str Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffsimplest_display_strTb4b4b4(Te6edf3op_hashTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3op_str Tff7b72= Ta5d6ff"Ta5d6ffUnknownTa5d6ff"

Tff7b72def Td2a8ffshow_known_nodesTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, Te6edf3height_amountTff7b72=T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffknown_nodes_displayTb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72def Td2a8ffconnectTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffbrowserTff7b72.Td2a8ffretrieve_urlTb4b4b4(Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Te6edf3source_hashTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4)
Te6edf3show_known_nodesTb4b4b4(Tff7b72NoneTb4b4b4)

Tff7b72def Td2a8ffmsg_opTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Te6edf3show_known_nodesTb4b4b4(Tff7b72NoneTb4b4b4)
Tff7b72if Te6edf3node_ident Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3existing_conversations Tff7b72= Te6edf3nomadnetTff7b72.Td2a8ffConversationTff7b72.Td2a8ffconversation_listTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)

Te6edf3source_hash_text Tff7b72= Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Te6edf3op_hashTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)
Te6edf3display_name Tff7b72= Te6edf3op_str

Tff7b72if Tff7b72not Te6edf3source_hash_text Tff7b72in Tb4b4b4[Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72for Te6edf3c Tff7b72in Te6edf3existing_conversationsTb4b4b4]Tb4b4b4:
Te6edf3entry Tff7b72= Te6edf3DirectoryEntryTb4b4b4(Te6edf3source_hashTb4b4b4, Te6edf3display_nameTb4b4b4, Te6edf3trust_levelTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffrememberTb4b4b4(Te6edf3entryTb4b4b4)

Te6edf3new_conversation Tff7b72= Te6edf3nomadnetTff7b72.Td2a8ffConversationTb4b4b4(Te6edf3source_hash_textTb4b4b4, Te6edf3nomadnetTff7b72.Td2a8ffNomadNetworkAppTff7b72.Td2a8ffget_shared_instanceTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3initiatorTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffconversations_displayTff7b72.Td2a8ffupdate_conversation_listTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffconversations_displayTff7b72.Td2a8ffdisplay_conversationTb4b4b4(Tff7b72NoneTb4b4b4, Te6edf3source_hash_textTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffshow_conversationsTb4b4b4(Tff7b72NoneTb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffError while starting conversation from node info. The contained exception was: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)

Tff7b72def Td2a8ffpn_changeTb4b4b4(Te6edf3senderTb4b4b4, Te6edf3userdataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffpn_changed Tff7b72= Tff7b72True

Tff7b72def Td2a8ffident_changeTb4b4b4(Te6edf3senderTb4b4b4, Te6edf3userdataTb4b4b4)Tb4b4b4:
Tff7b72pass

Te6edf3propagation_node_checkbox Tff7b72= Te6edf3urwidTff7b72.Td2a8ffCheckBoxTb4b4b4(Ta5d6ff"Ta5d6ffUse as default propagation nodeTa5d6ff"Tb4b4b4, Te6edf3stateTff7b72=Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffget_user_selected_propagation_nodeTb4b4b4(Tb4b4b4) Tff7b72== Te6edf3pn_hashTb4b4b4)Tb4b4b4, Te6edf3on_state_changeTff7b72=Te6edf3pn_changeTb4b4b4)
Te6edf3connect_identify_checkbox Tff7b72= Te6edf3urwidTff7b72.Td2a8ffCheckBoxTb4b4b4(Ta5d6ff"Ta5d6ffIdentify when connectingTa5d6ff"Tb4b4b4, Te6edf3stateTff7b72=Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffshould_identify_on_connectTb4b4b4(Te6edf3source_hashTb4b4b4)Tb4b4b4, Te6edf3on_state_changeTff7b72=Te6edf3ident_changeTb4b4b4)

Tff7b72def Td2a8ffsave_nodeTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffpn_changedTb4b4b4:
Tff7b72if Te6edf3propagation_node_checkboxTff7b72.Td2a8ffget_stateTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffset_user_selected_propagation_nodeTb4b4b4(Te6edf3pn_hashTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffset_user_selected_propagation_nodeTb4b4b4(Tff7b72NoneTb4b4b4)

Te6edf3trust_level Tff7b72= Te6edf3DirectoryEntryTff7b72.Td2a8ffUNTRUSTED
Tff7b72if Te6edf3r_unknownTff7b72.Td2a8ffget_stateTb4b4b4(Tb4b4b4) Tff7b72== Tff7b72TrueTb4b4b4:
Te6edf3trust_level Tff7b72= Te6edf3DirectoryEntryTff7b72.Td2a8ffUNKNOWN

Tff7b72if Te6edf3r_trustedTff7b72.Td2a8ffget_stateTb4b4b4(Tb4b4b4) Tff7b72== Tff7b72TrueTb4b4b4:
Te6edf3trust_level Tff7b72= Te6edf3DirectoryEntryTff7b72.Td2a8ffTRUSTED

Te6edf3display_str Tff7b72= Te6edf3e_nameTff7b72.Td2a8ffget_edit_textTb4b4b4(Tb4b4b4)
Te6edf3sort_rank Tff7b72= Te6edf3e_sortTff7b72.Td2a8ffget_edit_textTb4b4b4(Tb4b4b4)
Tff7b72tryTb4b4b4:
Tff7b72if Tffa657intTb4b4b4(Te6edf3sort_rankTb4b4b4) Tff7b72>Tff7b72= T79c0ff0Tb4b4b4:
Te6edf3sort_rank Tff7b72= Tffa657intTb4b4b4(Te6edf3sort_rankTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3sort_rank Tff7b72= Tff7b72None
Tff7b72exceptTb4b4b4:
Te6edf3sort_rank Tff7b72= Tff7b72None

Te6edf3node_entry Tff7b72= Te6edf3DirectoryEntryTb4b4b4(Te6edf3source_hashTb4b4b4, Te6edf3display_nameTff7b72=Te6edf3display_strTb4b4b4, Te6edf3trust_levelTff7b72=Te6edf3trust_levelTb4b4b4, Te6edf3hosts_nodeTff7b72=Tff7b72TrueTb4b4b4, Te6edf3identify_on_connectTff7b72=Te6edf3connect_identify_checkboxTff7b72.Td2a8ffget_stateTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3sort_rankTff7b72=Te6edf3sort_rankTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffrememberTb4b4b4(Te6edf3node_entryTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffnetwork_displayTff7b72.Td2a8ffdirectory_change_callbackTb4b4b4(Tb4b4b4)

Tff7b72if Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffTRUSTEDTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffautoselect_propagation_nodeTb4b4b4(Tb4b4b4)

Te6edf3show_known_nodesTb4b4b4(Tff7b72NoneTb4b4b4)

Te6edf3back_button Tff7b72= Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.2Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffBackTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3show_known_nodesTb4b4b4)Tb4b4b4)
Te6edf3connect_button Tff7b72= Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.2Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffConnectTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3connectTb4b4b4)Tb4b4b4)
Te6edf3save_button Tff7b72= Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.2Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffSaveTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3save_nodeTb4b4b4)Tb4b4b4)
Te6edf3msg_button Tff7b72= Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.2Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffMsg OpTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3msg_opTb4b4b4)Tb4b4b4)
Te6edf3bdiv Tff7b72= Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.02Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)

Te6edf3button_columns Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[Te6edf3back_buttonTb4b4b4, Te6edf3bdivTb4b4b4, Te6edf3connect_buttonTb4b4b4, Te6edf3bdivTb4b4b4, Te6edf3msg_buttonTb4b4b4, Te6edf3bdivTb4b4b4, Te6edf3save_buttonTb4b4b4]Tb4b4b4)

Te6edf3pile_widgets Tff7b72= Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffType : Ta5d6ff"Tff7b72+Te6edf3type_stringTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffLEFTTb4b4b4)Tb4b4b4,
Te6edf3e_nameTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffNode Addr : Ta5d6ff"Tff7b72+Te6edf3addr_strTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffLEFTTb4b4b4)Tb4b4b4,
Te6edf3e_sortTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffdivider1Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Te6edf3lxmf_addr_strTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffdivider1Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3propagation_node_checkboxTb4b4b4,
Te6edf3connect_identify_checkboxTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffdivider1Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3r_untrustedTb4b4b4,
Te6edf3r_unknownTb4b4b4,
Te6edf3r_trustedTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffdivider1Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3button_columns
Tb4b4b4]

Te6edf3operator_entry Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffOperator : Ta5d6ff"Tff7b72+Te6edf3op_strTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffLEFTTb4b4b4)
Te6edf3pile_widgetsTff7b72.Td2a8ffinsertTb4b4b4(T79c0ff3Tb4b4b4, Te6edf3operator_entryTb4b4b4)

Te6edf3hops Tff7b72= Te6edf3RNSTff7b72.Td2a8ffTransportTff7b72.Td2a8ffhops_toTb4b4b4(Te6edf3source_hashTb4b4b4)
Tff7b72if Te6edf3hops Tff7b72== T79c0ff1Tb4b4b4:
Te6edf3str_s Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3str_s Tff7b72= Ta5d6ff"Ta5d6ffsTa5d6ff"

Tff7b72if Te6edf3hops Tff7b72!= Te6edf3RNSTff7b72.Td2a8ffTransportTff7b72.Td2a8ffPATHFINDER_MTb4b4b4:
Te6edf3hops_str Tff7b72= Tffa657strTb4b4b4(Te6edf3hopsTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff hopTa5d6ff"Tff7b72+Te6edf3str_s
Tff7b72elseTb4b4b4:
Te6edf3hops_str Tff7b72= Ta5d6ff"Ta5d6ffUnknownTa5d6ff"

Te6edf3operator_entry Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffDistance : Ta5d6ff"Tff7b72+Te6edf3hops_strTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffLEFTTb4b4b4)
Te6edf3pile_widgetsTff7b72.Td2a8ffinsertTb4b4b4(T79c0ff4Tb4b4b4, Te6edf3operator_entryTb4b4b4)

Te6edf3pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Te6edf3pile_widgetsTb4b4b4)

Te6edf3pileTff7b72.Td2a8fffocus_position Tff7b72= Tffa657lenTb4b4b4(Te6edf3pileTff7b72.Td2a8ffcontentsTb4b4b4)Tff7b72-T79c0ff1
Te6edf3button_columnsTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff0


Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffFillerTb4b4b4(Te6edf3pileTb4b4b4, Te6edf3valignTff7b72=Te6edf3urwidTff7b72.Td2a8ffTOPTb4b4b4, Te6edf3heightTff7b72=Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffNode InfoTa5d6ff"Tb4b4b4)Tb4b4b4)


T8b949e# Yes, this is weird. There is a bug in Urwid/ILB that causes
T8b949e# an indexing exception when the list is very small vertically.
T8b949e# This mitigates it.
Tff7b72class T56d364ExceptionHandlingListBoxTb4b4b4(Te6edf3IndicativeListBoxTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Tff7b72return Tffa657superTb4b4b4(Te6edf3ExceptionHandlingListBoxTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffupTa5d6ff"Tb4b4b4:
Te6edf3nomadnetTff7b72.Td2a8ffNomadNetworkAppTff7b72.Td2a8ffget_shared_instanceTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72= Ta5d6ff"Ta5d6ffheaderTa5d6ff"
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffdownTa5d6ff"Tb4b4b4:
Te6edf3nomadnetTff7b72.Td2a8ffNomadNetworkAppTff7b72.Td2a8ffget_shared_instanceTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffnetwork_displayTff7b72.Td2a8ffleft_pileTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff1
Tff7b72elseTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffAn error occurred while processing an interface event. The contained exception was: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)


Tff7b72class T56d364KnownNodesTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8ffnode_list Tff7b72= Te6edf3appTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffknown_nodesTb4b4b4(Tb4b4b4)
Te6edf3g Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs

Tff7b72selfTff7b72.Td2a8ffwidget_list Tff7b72= Tff7b72selfTff7b72.Td2a8ffmake_node_widgetsTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffilb Tff7b72= Te6edf3ExceptionHandlingListBoxTb4b4b4(
Tff7b72selfTff7b72.Td2a8ffwidget_listTb4b4b4,
Te6edf3on_selection_changeTff7b72=Tff7b72selfTff7b72.Td2a8ffnode_list_selectionTb4b4b4,
Te6edf3initialization_is_selection_changeTff7b72=Tff7b72FalseTb4b4b4,
Te6edf3highlight_offFocusTff7b72=Ta5d6ff"Ta5d6fflist_off_focusTa5d6ff"
Tb4b4b4)

Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffnode_listTb4b4b4) Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffilb
Te6edf3widget_style Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffno_content Tff7b72= Tff7b72False
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffno_content Tff7b72= Tff7b72True
Te6edf3widget_style Tff7b72= Ta5d6ff"Ta5d6ffinactive_textTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffpile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffwarning_textTa5d6ff"Tb4b4b4, Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffinfoTa5d6ff"Tb4b4b4]Tff7b72+Ta5d6ff"Tffea00\nTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4)Tb4b4b4,
Te6edf3SelectTextTb4b4b4(
Tb4b4b4(
Ta5d6ff"Ta5d6ffwarning_textTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffCurrently, no nodes are savedTffea00\nTffea00\nTa5d6ffCtrl+L to view the announce streamTffea00\nTffea00\nTa5d6ff"Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffFillerTb4b4b4(Tff7b72selfTff7b72.Td2a8ffpileTb4b4b4, Te6edf3valignTff7b72=Te6edf3urwidTff7b72.Td2a8ffTOPTb4b4b4, Te6edf3heightTff7b72=Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffSaved NodesTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3widget_styleTb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffupTa5d6ff" Tff7b72and Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffno_content Tff7b72or Tff7b72selfTff7b72.Td2a8ffilbTff7b72.Td2a8fffirst_item_is_selectedTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4:
Te6edf3nomadnetTff7b72.Td2a8ffNomadNetworkAppTff7b72.Td2a8ffget_shared_instanceTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72= Ta5d6ff"Ta5d6ffheaderTa5d6ff"
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffctrl xTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdelete_selected_entryTb4b4b4(Tb4b4b4)

Tff7b72return Tffa657superTb4b4b4(Te6edf3KnownNodesTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)


Tff7b72def Td2a8ffnode_list_selectionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3arg1Tb4b4b4, Te6edf3arg2Tb4b4b4)Tb4b4b4:
Tff7b72pass

Tff7b72def Td2a8ffconnect_nodeTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3eventTb4b4b4, Te6edf3nodeTb4b4b4)Tb4b4b4:
Te6edf3source_hash Tff7b72= Te6edf3nodeTff7b72.Td2a8ffsource_hash
Te6edf3trust_level Tff7b72= Te6edf3nodeTff7b72.Td2a8fftrust_level
Te6edf3trust_level Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8fftrust_levelTb4b4b4(Te6edf3source_hashTb4b4b4)
Te6edf3display_str Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffsimplest_display_strTb4b4b4(Te6edf3source_hashTb4b4b4)

Te6edf3parent Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffnetwork_display

Tff7b72def Td2a8ffdismiss_dialogTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffclose_list_dialogsTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffconfirmedTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffbrowserTff7b72.Td2a8ffretrieve_urlTb4b4b4(Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Te6edf3source_hashTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffclose_list_dialogsTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffshow_infoTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Te6edf3info_widget Tff7b72= Te6edf3KnownNodeInfoTb4b4b4(Te6edf3source_hashTb4b4b4)
Te6edf3options Tff7b72= Te6edf3parentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, Te6edf3height_amountTff7b72=T79c0ff1Tb4b4b4)
Te6edf3parentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3info_widgetTb4b4b4, Te6edf3optionsTb4b4b4)


Te6edf3dialog Tff7b72= Te6edf3ListDialogLineBoxTb4b4b4(
Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffConnect to nodeTffea00\nTa5d6ff"Tff7b72+Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffsimplest_display_strTb4b4b4(Te6edf3source_hashTb4b4b4)Tff7b72+Ta5d6ff"Tffea00\nTa5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3confirmedTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3dismiss_dialogTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffInfoTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3show_infoTb4b4b4)Tb4b4b4)Tb4b4b4]Tb4b4b4)
Tb4b4b4]Tb4b4b4)Tb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ff?Ta5d6ff"
Tb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffdelegate Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegate
Te6edf3bottom Tff7b72= Tff7b72self

Te6edf3overlay Tff7b72= Te6edf3urwidTff7b72.Td2a8ffOverlayTb4b4b4(Te6edf3dialogTb4b4b4, Te6edf3bottomTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4, Te6edf3widthTff7b72=Te6edf3urwidTff7b72.Td2a8ffRELATIVE_100Tb4b4b4, Te6edf3valignTff7b72=Te6edf3urwidTff7b72.Td2a8ffMIDDLETb4b4b4, Te6edf3heightTff7b72=Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4, Te6edf3leftTff7b72=T79c0ff2Tb4b4b4, Te6edf3rightTff7b72=T79c0ff2Tb4b4b4)

Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3overlayTb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72def Td2a8ffdelete_selected_entryTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3si Tff7b72= Tff7b72selfTff7b72.Td2a8ffilbTff7b72.Td2a8ffget_selected_itemTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3si Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3source_hash Tff7b72= Te6edf3siTff7b72.Td2a8fforiginal_widgetTff7b72.Td2a8ffsource_hash

Tff7b72def Td2a8ffdismiss_dialogTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffclose_list_dialogsTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffconfirmedTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffforgetTb4b4b4(Te6edf3source_hashTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffrebuild_widget_listTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffclose_list_dialogsTb4b4b4(Tb4b4b4)


Te6edf3dialog Tff7b72= Te6edf3ListDialogLineBoxTb4b4b4(
Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffDelete NodeTffea00\nTa5d6ff"Tff7b72+Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffsimplest_display_strTb4b4b4(Te6edf3source_hashTb4b4b4)Tff7b72+Ta5d6ff"Tffea00\nTa5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3confirmedTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3dismiss_dialogTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)
Tb4b4b4]Tb4b4b4)Tb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ff?Ta5d6ff"
Tb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffdelegate Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegate
Te6edf3bottom Tff7b72= Tff7b72self

Te6edf3overlay Tff7b72= Te6edf3urwidTff7b72.Td2a8ffOverlayTb4b4b4(
Te6edf3dialogTb4b4b4,
Te6edf3bottomTb4b4b4,
Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4,
Te6edf3widthTff7b72=Te6edf3urwidTff7b72.Td2a8ffRELATIVE_100Tb4b4b4,
Te6edf3valignTff7b72=Te6edf3urwidTff7b72.Td2a8ffMIDDLETb4b4b4,
Te6edf3heightTff7b72=Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4,
Te6edf3leftTff7b72=T79c0ff2Tb4b4b4,
Te6edf3rightTff7b72=T79c0ff2Tb4b4b4,
Tb4b4b4)

Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3overlayTb4b4b4, Te6edf3optionsTb4b4b4)


Tff7b72def Td2a8ffrebuild_widget_listTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffnode_list Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffknown_nodesTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffwidget_list Tff7b72= Tff7b72selfTff7b72.Td2a8ffmake_node_widgetsTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffilbTff7b72.Td2a8ffset_bodyTb4b4b4(Tff7b72selfTff7b72.Td2a8ffwidget_listTb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffwidget_listTb4b4b4) Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffno_content Tff7b72= Tff7b72False
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffno_content Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffreinit_known_nodesTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffmake_node_widgetsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3widget_list Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3node_entry Tff7b72in Tff7b72selfTff7b72.Td2a8ffnode_listTb4b4b4:
T8b949e# TODO: Implement this
Te6edf3ne Tff7b72= Te6edf3NodeEntryTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Te6edf3node_entryTb4b4b4, Tff7b72selfTb4b4b4)
Te6edf3neTff7b72.Td2a8ffsource_hash Tff7b72= Te6edf3node_entryTff7b72.Td2a8ffsource_hash
Te6edf3widget_listTff7b72.Td2a8ffappendTb4b4b4(Te6edf3neTb4b4b4)

T8b949e# TODO: Sort list
Tff7b72return Te6edf3widget_list

Tff7b72class T56d364NodeEntryTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4, Te6edf3nodeTb4b4b4, Te6edf3delegateTb4b4b4)Tb4b4b4:
Te6edf3source_hash Tff7b72= Te6edf3nodeTff7b72.Td2a8ffsource_hash
Te6edf3trust_level Tff7b72= Te6edf3nodeTff7b72.Td2a8fftrust_level

Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Te6edf3g Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs

Te6edf3trust_level Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8fftrust_levelTb4b4b4(Te6edf3source_hashTb4b4b4)
Te6edf3display_str Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffsimplest_display_strTb4b4b4(Te6edf3source_hashTb4b4b4, Te6edf3sanTff7b72=Tff7b72FalseTb4b4b4)

Tff7b72if Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffUNTRUSTEDTb4b4b4:
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffcrossTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_untrustedTa5d6ff"
Te6edf3focus_style Tff7b72= Ta5d6ff"Ta5d6fflist_focus_untrustedTa5d6ff"
Tff7b72elif Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffUNKNOWNTb4b4b4:
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffunknownTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_unknownTa5d6ff"
Te6edf3focus_style Tff7b72= Ta5d6ff"Ta5d6fflist_focusTa5d6ff"
Tff7b72elif Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffTRUSTEDTb4b4b4:
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffcheckTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_trustedTa5d6ff"
Te6edf3focus_style Tff7b72= Ta5d6ff"Ta5d6fflist_focus_trustedTa5d6ff"
Tff7b72elif Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffWARNINGTb4b4b4:
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffwarningTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_warningTa5d6ff"
Te6edf3focus_style Tff7b72= Ta5d6ff"Ta5d6fflist_focusTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffwarningTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_untrustedTa5d6ff"
Te6edf3focus_style Tff7b72= Ta5d6ff"Ta5d6fflist_focus_untrustedTa5d6ff"

Te6edf3type_symbol Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffnodeTa5d6ff"Tb4b4b4]

Te6edf3widget Tff7b72= Te6edf3ListEntryTb4b4b4(Te6edf3type_symbolTff7b72+Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72+Te6edf3display_strTb4b4b4)
Te6edf3urwidTff7b72.Td2a8ffconnect_signalTb4b4b4(Te6edf3widgetTb4b4b4, Ta5d6ff"Ta5d6ffclickTa5d6ff"Tb4b4b4, Te6edf3delegateTff7b72.Td2a8ffconnect_nodeTb4b4b4, Te6edf3nodeTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3widgetTb4b4b4, Te6edf3styleTb4b4b4, Te6edf3focus_styleTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTff7b72.Td2a8ffsource_hash Tff7b72= Te6edf3source_hash
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4)


Tff7b72class T56d364AnnounceTimeTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8fftimeout Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6fftextuiTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffanimation_intervalTa5d6ff"Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffupdate_timeTb4b4b4(Tb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4)

Tff7b72def Td2a8ffupdate_timeTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fflast_announce_string Tff7b72= Ta5d6ff"Ta5d6ffNeverTa5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffpeer_settingsTb4b4b4[Ta5d6ff"Ta5d6fflast_announceTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8fflast_announce_string Tff7b72= Te6edf3pretty_dateTb4b4b4(Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffpeer_settingsTb4b4b4[Ta5d6ff"Ta5d6fflast_announceTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6ff"Ta5d6ffAnnounced : Ta5d6ff"Tff7b72+Tff7b72selfTff7b72.Td2a8fflast_announce_stringTb4b4b4)

Tff7b72def Td2a8ffupdate_time_callbackTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3loopTff7b72=Tff7b72NoneTb4b4b4, Te6edf3user_dataTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_timeTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffstartedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(Tff7b72selfTff7b72.Td2a8fftimeoutTb4b4b4, Tff7b72selfTff7b72.Td2a8ffupdate_time_callbackTb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3was_started Tff7b72= Tff7b72selfTff7b72.Td2a8ffstarted
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72True
Tff7b72if Tff7b72not Te6edf3was_startedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_time_callbackTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False


Tff7b72class T56d364NodeAnnounceTimeTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8fftimeout Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6fftextuiTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffanimation_intervalTa5d6ff"Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffupdate_timeTb4b4b4(Tb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4)

Tff7b72def Td2a8ffupdate_timeTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fflast_announce_string Tff7b72= Ta5d6ff"Ta5d6ffNeverTa5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffpeer_settingsTb4b4b4[Ta5d6ff"Ta5d6ffnode_last_announceTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8fflast_announce_string Tff7b72= Te6edf3pretty_dateTb4b4b4(Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffpeer_settingsTb4b4b4[Ta5d6ff"Ta5d6ffnode_last_announceTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6ff"Ta5d6ffLast Announce : Ta5d6ff"Tff7b72+Tff7b72selfTff7b72.Td2a8fflast_announce_stringTb4b4b4)

Tff7b72def Td2a8ffupdate_time_callbackTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3loopTff7b72=Tff7b72NoneTb4b4b4, Te6edf3user_dataTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_timeTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffstartedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(Tff7b72selfTff7b72.Td2a8fftimeoutTb4b4b4, Tff7b72selfTff7b72.Td2a8ffupdate_time_callbackTb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3was_started Tff7b72= Tff7b72selfTff7b72.Td2a8ffstarted
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72True
Tff7b72if Tff7b72not Te6edf3was_startedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_time_callbackTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False

Tff7b72class T56d364NodeActiveConnectionsTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8fftimeout Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6fftextuiTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffanimation_intervalTa5d6ff"Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffupdate_statTb4b4b4(Tb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4)

Tff7b72def Td2a8ffupdate_statTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstat_string Tff7b72= Ta5d6ff"Ta5d6ffNoneTa5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffnode Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstat_string Tff7b72= Tffa657strTb4b4b4(Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffnodeTff7b72.Td2a8ffdestinationTff7b72.Td2a8fflinksTb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6ff"Ta5d6ffConnected Now : Ta5d6ff"Tff7b72+Tff7b72selfTff7b72.Td2a8ffstat_stringTb4b4b4)

Tff7b72def Td2a8ffupdate_stat_callbackTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3loopTff7b72=Tff7b72NoneTb4b4b4, Te6edf3user_dataTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_statTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffstartedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(Tff7b72selfTff7b72.Td2a8fftimeoutTb4b4b4, Tff7b72selfTff7b72.Td2a8ffupdate_stat_callbackTb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3was_started Tff7b72= Tff7b72selfTff7b72.Td2a8ffstarted
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72True
Tff7b72if Tff7b72not Te6edf3was_startedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_stat_callbackTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False

Tff7b72class T56d364NodeStorageStatsTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8fftimeout Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6fftextuiTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffanimation_intervalTa5d6ff"Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffupdate_statTb4b4b4(Tb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4)

Tff7b72def Td2a8ffupdate_statTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstat_string Tff7b72= Ta5d6ff"Ta5d6ffNoneTa5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffnode Tff7b72!= Tff7b72None Tff7b72and Tff7b72not Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdisable_propagationTb4b4b4:

Te6edf3limit Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffmessage_routerTff7b72.Td2a8ffmessage_storage_limit
Te6edf3used Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffmessage_routerTff7b72.Td2a8ffmessage_storage_sizeTb4b4b4(Tb4b4b4)

Tff7b72if Te6edf3limit Tff7b72!= Tff7b72None Tff7b72and Te6edf3used Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3pct Tff7b72= Tffa657roundTb4b4b4(Tb4b4b4(Te6edf3usedTff7b72/Te6edf3limitTb4b4b4)Tff7b72*T79c0ff100Tb4b4b4, T79c0ff1Tb4b4b4)
Te6edf3pct_str Tff7b72= Tffa657strTb4b4b4(Te6edf3pctTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff%Ta5d6ff, Ta5d6ff"
Te6edf3limit_str Tff7b72= Ta5d6ff"Ta5d6ff of Ta5d6ff"Tff7b72+Te6edf3RNSTff7b72.Td2a8ffprettysizeTb4b4b4(Te6edf3limitTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3limit_str Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3pct_str Tff7b72= Ta5d6ff"Ta5d6ff"

Tff7b72selfTff7b72.Td2a8ffstat_string Tff7b72= Te6edf3pct_strTff7b72+Te6edf3RNSTff7b72.Td2a8ffprettysizeTb4b4b4(Te6edf3usedTb4b4b4)Tff7b72+Te6edf3limit_str

Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6ff"Ta5d6ffLXMF Storage : Ta5d6ff"Tff7b72+Tff7b72selfTff7b72.Td2a8ffstat_stringTb4b4b4)

Tff7b72def Td2a8ffupdate_stat_callbackTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3loopTff7b72=Tff7b72NoneTb4b4b4, Te6edf3user_dataTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_statTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffstartedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(Tff7b72selfTff7b72.Td2a8fftimeoutTb4b4b4, Tff7b72selfTff7b72.Td2a8ffupdate_stat_callbackTb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3was_started Tff7b72= Tff7b72selfTff7b72.Td2a8ffstarted
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72True
Tff7b72if Tff7b72not Te6edf3was_startedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_stat_callbackTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False

Tff7b72class T56d364NodeTotalConnectionsTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8fftimeout Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6fftextuiTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffanimation_intervalTa5d6ff"Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffupdate_statTb4b4b4(Tb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4)

Tff7b72def Td2a8ffupdate_statTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstat_string Tff7b72= Ta5d6ff"Ta5d6ffNoneTa5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffnode Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstat_string Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffpeer_settingsTb4b4b4[Ta5d6ff"Ta5d6ffnode_connectsTa5d6ff"Tb4b4b4]Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6ff"Ta5d6ffTotal Connects : Ta5d6ff"Tff7b72+Tff7b72selfTff7b72.Td2a8ffstat_stringTb4b4b4)

Tff7b72def Td2a8ffupdate_stat_callbackTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3loopTff7b72=Tff7b72NoneTb4b4b4, Te6edf3user_dataTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_statTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffstartedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(Tff7b72selfTff7b72.Td2a8fftimeoutTb4b4b4, Tff7b72selfTff7b72.Td2a8ffupdate_stat_callbackTb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3was_started Tff7b72= Tff7b72selfTff7b72.Td2a8ffstarted
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72True
Tff7b72if Tff7b72not Te6edf3was_startedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_stat_callbackTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False


Tff7b72class T56d364NodeTotalPagesTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8fftimeout Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6fftextuiTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffanimation_intervalTa5d6ff"Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffupdate_statTb4b4b4(Tb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4)

Tff7b72def Td2a8ffupdate_statTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstat_string Tff7b72= Ta5d6ff"Ta5d6ffNoneTa5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffnode Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstat_string Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffpeer_settingsTb4b4b4[Ta5d6ff"Ta5d6ffserved_page_requestsTa5d6ff"Tb4b4b4]Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6ff"Ta5d6ffServed Pages : Ta5d6ff"Tff7b72+Tff7b72selfTff7b72.Td2a8ffstat_stringTb4b4b4)

Tff7b72def Td2a8ffupdate_stat_callbackTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3loopTff7b72=Tff7b72NoneTb4b4b4, Te6edf3user_dataTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_statTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffstartedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(Tff7b72selfTff7b72.Td2a8fftimeoutTb4b4b4, Tff7b72selfTff7b72.Td2a8ffupdate_stat_callbackTb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3was_started Tff7b72= Tff7b72selfTff7b72.Td2a8ffstarted
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72True
Tff7b72if Tff7b72not Te6edf3was_startedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_stat_callbackTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False


Tff7b72class T56d364NodeTotalFilesTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8fftimeout Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6fftextuiTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffanimation_intervalTa5d6ff"Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffupdate_statTb4b4b4(Tb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4)

Tff7b72def Td2a8ffupdate_statTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstat_string Tff7b72= Ta5d6ff"Ta5d6ffNoneTa5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffnode Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstat_string Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffpeer_settingsTb4b4b4[Ta5d6ff"Ta5d6ffserved_file_requestsTa5d6ff"Tb4b4b4]Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6ff"Ta5d6ffServed Files : Ta5d6ff"Tff7b72+Tff7b72selfTff7b72.Td2a8ffstat_stringTb4b4b4)

Tff7b72def Td2a8ffupdate_stat_callbackTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3loopTff7b72=Tff7b72NoneTb4b4b4, Te6edf3user_dataTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_statTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffstartedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(Tff7b72selfTff7b72.Td2a8fftimeoutTb4b4b4, Tff7b72selfTff7b72.Td2a8ffupdate_stat_callbackTb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3was_started Tff7b72= Tff7b72selfTff7b72.Td2a8ffstarted
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72True
Tff7b72if Tff7b72not Te6edf3was_startedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_stat_callbackTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False


Tff7b72class T56d364LocalPeerTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Te6edf3announce_timer Tff7b72= Tff7b72None

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4, Te6edf3parentTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8ffparent Tff7b72= Te6edf3parent
Te6edf3g Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs
Tff7b72selfTff7b72.Td2a8ffdialog_open Tff7b72= Tff7b72False
Te6edf3display_name Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8fflxmf_destinationTff7b72.Td2a8ffdisplay_name
Tff7b72if Te6edf3display_name Tff7b72== Tff7b72NoneTb4b4b4:
Te6edf3display_name Tff7b72= Ta5d6ff"Ta5d6ff"

Te6edf3t_id Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffLXMF Addr : Ta5d6ff"Tff7b72+Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8fflxmf_destinationTff7b72.Td2a8ffhashTb4b4b4)Tb4b4b4)
Te6edf3i_id Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffIdentity : Ta5d6ff"Tff7b72+Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffidentityTff7b72.Td2a8ffhashTb4b4b4)Tb4b4b4)
Te6edf3e_name Tff7b72= Te6edf3ReadlineEditTb4b4b4(Te6edf3captionTff7b72=Ta5d6ff"Ta5d6ffName : Ta5d6ff"Tb4b4b4, Te6edf3edit_textTff7b72=Te6edf3display_nameTb4b4b4)

Tff7b72def Td2a8ffsave_queryTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffdismiss_dialogTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdialog_open Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3LocalPeerTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Tff7b72selfTff7b72.Td2a8ffparentTb4b4b4)Tb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffset_display_nameTb4b4b4(Te6edf3e_nameTff7b72.Td2a8ffget_edit_textTb4b4b4(Tb4b4b4)Tb4b4b4)

Te6edf3dialog Tff7b72= Te6edf3DialogLineBoxTb4b4b4(
Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Tffea00\nTffea00\nTffea00\nTa5d6ffSavedTffea00\nTffea00\nTa5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3dismiss_dialogTb4b4b4)
Tb4b4b4]Tb4b4b4)Tb4b4b4, Te6edf3titleTff7b72=Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffinfoTa5d6ff"Tb4b4b4]
Tb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffdelegate Tff7b72= Tff7b72self
Te6edf3bottom Tff7b72= Tff7b72self

T8b949e#overlay = urwid.Overlay(dialog, bottom, align=urwid.CENTER, width=urwid.RELATIVE_100, valign=urwid.MIDDLE, height=urwid.PACK, left=4, right=4)
Te6edf3overlay Tff7b72= Te6edf3dialog
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4, Te6edf3height_amountTff7b72=Tff7b72NoneTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdialog_open Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3overlayTb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72def Td2a8ffannounce_queryTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffdismiss_dialogTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdialog_open Tff7b72= Tff7b72False
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4, Te6edf3height_amountTff7b72=Tff7b72NoneTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3LocalPeerTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Tff7b72selfTff7b72.Td2a8ffparentTb4b4b4)Tb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffannounce_nowTb4b4b4(Tb4b4b4)

Te6edf3dialog Tff7b72= Te6edf3DialogLineBoxTb4b4b4(
Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Tffea00\nTffea00\nTffea00\nTa5d6ffAnnounce SentTffea00\nTffea00\nTffea00\nTa5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3dismiss_dialogTb4b4b4)
Tb4b4b4]Tb4b4b4)Tb4b4b4, Te6edf3titleTff7b72=Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffinfoTa5d6ff"Tb4b4b4]
Tb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffdelegate Tff7b72= Tff7b72self
Te6edf3bottom Tff7b72= Tff7b72self

T8b949e#overlay = urwid.Overlay(dialog, bottom, align=urwid.CENTER, width=urwid.RELATIVE_100, valign=urwid.MIDDLE, height=urwid.PACK, left=4, right=4)
Te6edf3overlay Tff7b72= Te6edf3dialog

Tff7b72selfTff7b72.Td2a8ffdialog_open Tff7b72= Tff7b72True
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4, Te6edf3height_amountTff7b72=Tff7b72NoneTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3overlayTb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72def Td2a8ffnode_info_queryTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4, Te6edf3height_amountTff7b72=Tff7b72NoneTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffnode_info_displayTb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72if Te6edf3LocalPeerTff7b72.Td2a8ffannounce_timer Tff7b72== Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_last_announce Tff7b72= Te6edf3AnnounceTimeTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Te6edf3LocalPeerTff7b72.Td2a8ffannounce_timer Tff7b72= Tff7b72selfTff7b72.Td2a8fft_last_announce
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_last_announce Tff7b72= Te6edf3LocalPeerTff7b72.Td2a8ffannounce_timer
Tff7b72selfTff7b72.Td2a8fft_last_announceTff7b72.Td2a8ffupdate_timeTb4b4b4(Tb4b4b4)

Te6edf3announce_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffAnnounce NowTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3announce_queryTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(
Tb4b4b4[
Te6edf3t_idTb4b4b4,
Te6edf3i_idTb4b4b4,
Te6edf3e_nameTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffdivider1Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8fft_last_announceTb4b4b4,
Te6edf3announce_buttonTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffdivider1Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffSaveTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3save_queryTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffNode InfoTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3node_info_queryTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)Tb4b4b4,
Tb4b4b4]
Tb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffLocal Peer InfoTa5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_last_announceTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)


Tff7b72class T56d364NodeInfoTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Te6edf3announce_timer Tff7b72= Tff7b72None
Te6edf3links_timer Tff7b72= Tff7b72None
Te6edf3conns_timer Tff7b72= Tff7b72None
Te6edf3pages_timer Tff7b72= Tff7b72None
Te6edf3files_timer Tff7b72= Tff7b72None
Te6edf3storage_timer Tff7b72= Tff7b72None

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4, Te6edf3parentTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8ffparent Tff7b72= Te6edf3parent
Te6edf3g Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs

Tff7b72selfTff7b72.Td2a8ffdialog_open Tff7b72= Tff7b72False

Te6edf3widget_style Tff7b72= Ta5d6ff"Ta5d6ff"

Tff7b72def Td2a8ffshow_peer_infoTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4, Te6edf3height_amountTff7b72=Tff7b72NoneTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3LocalPeerTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Tff7b72selfTff7b72.Td2a8ffparentTb4b4b4)Tb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffenable_nodeTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffnode Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3display_name Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffnodeTff7b72.Td2a8ffname
Tff7b72elseTb4b4b4:
Te6edf3display_name Tff7b72= Tff7b72None

Tff7b72if Te6edf3display_name Tff7b72== Tff7b72NoneTb4b4b4:
Te6edf3display_name Tff7b72= Ta5d6ff"Ta5d6ff"

Te6edf3t_id Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffAddr : Ta5d6ff"Tff7b72+Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffnodeTff7b72.Td2a8ffdestinationTff7b72.Td2a8ffhashTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4)
Te6edf3e_name Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffName : Ta5d6ff"Tff7b72+Te6edf3display_nameTb4b4b4)

Tff7b72def Td2a8ffstats_queryTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffpeer_settingsTb4b4b4[Ta5d6ff"Ta5d6ffnode_connectsTa5d6ff"Tb4b4b4] Tff7b72= T79c0ff0
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffpeer_settingsTb4b4b4[Ta5d6ff"Ta5d6ffserved_page_requestsTa5d6ff"Tb4b4b4] Tff7b72= T79c0ff0
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffpeer_settingsTb4b4b4[Ta5d6ff"Ta5d6ffserved_file_requestsTa5d6ff"Tb4b4b4] Tff7b72= T79c0ff0
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsave_peer_settingsTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffannounce_queryTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffdismiss_dialogTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdialog_open Tff7b72= Tff7b72False
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4, Te6edf3height_amountTff7b72=Tff7b72NoneTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3NodeInfoTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Tff7b72selfTff7b72.Td2a8ffparentTb4b4b4)Tb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffnodeTff7b72.Td2a8ffannounceTb4b4b4(Tb4b4b4)

Te6edf3dialog Tff7b72= Te6edf3DialogLineBoxTb4b4b4(
Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Tffea00\nTffea00\nTffea00\nTa5d6ffAnnounce SentTffea00\nTffea00\nTa5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3dismiss_dialogTb4b4b4)
Tb4b4b4]Tb4b4b4)Tb4b4b4, Te6edf3titleTff7b72=Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffinfoTa5d6ff"Tb4b4b4]
Tb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffdelegate Tff7b72= Tff7b72self
Te6edf3bottom Tff7b72= Tff7b72self

T8b949e#overlay = urwid.Overlay(dialog, bottom, align=urwid.CENTER, width=urwid.RELATIVE_100, valign=urwid.MIDDLE, height=urwid.PACK, left=4, right=4)
Te6edf3overlay Tff7b72= Te6edf3dialog

Tff7b72selfTff7b72.Td2a8ffdialog_open Tff7b72= Tff7b72True
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4, Te6edf3height_amountTff7b72=Tff7b72NoneTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3overlayTb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72def Td2a8ffconnect_queryTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffbrowserTff7b72.Td2a8ffretrieve_urlTb4b4b4(Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffnodeTff7b72.Td2a8ffdestinationTff7b72.Td2a8ffhashTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4)

Tff7b72if Te6edf3NodeInfoTff7b72.Td2a8ffannounce_timer Tff7b72== Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_last_announce Tff7b72= Te6edf3NodeAnnounceTimeTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Te6edf3NodeInfoTff7b72.Td2a8ffannounce_timer Tff7b72= Tff7b72selfTff7b72.Td2a8fft_last_announce
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_last_announce Tff7b72= Te6edf3NodeInfoTff7b72.Td2a8ffannounce_timer
Tff7b72selfTff7b72.Td2a8fft_last_announceTff7b72.Td2a8ffupdate_timeTb4b4b4(Tb4b4b4)

Tff7b72if Te6edf3NodeInfoTff7b72.Td2a8fflinks_timer Tff7b72== Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_active_links Tff7b72= Te6edf3NodeActiveConnectionsTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Te6edf3NodeInfoTff7b72.Td2a8fflinks_timer Tff7b72= Tff7b72selfTff7b72.Td2a8fft_active_links
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_active_links Tff7b72= Te6edf3NodeInfoTff7b72.Td2a8fflinks_timer
Tff7b72selfTff7b72.Td2a8fft_active_linksTff7b72.Td2a8ffupdate_statTb4b4b4(Tb4b4b4)

Tff7b72if Te6edf3NodeInfoTff7b72.Td2a8ffstorage_timer Tff7b72== Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_storage_stats Tff7b72= Te6edf3NodeStorageStatsTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Te6edf3NodeInfoTff7b72.Td2a8ffstorage_timer Tff7b72= Tff7b72selfTff7b72.Td2a8fft_storage_stats
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_storage_stats Tff7b72= Te6edf3NodeInfoTff7b72.Td2a8ffstorage_timer
Tff7b72selfTff7b72.Td2a8fft_storage_statsTff7b72.Td2a8ffupdate_statTb4b4b4(Tb4b4b4)

Tff7b72if Te6edf3NodeInfoTff7b72.Td2a8ffconns_timer Tff7b72== Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_total_connections Tff7b72= Te6edf3NodeTotalConnectionsTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Te6edf3NodeInfoTff7b72.Td2a8ffconns_timer Tff7b72= Tff7b72selfTff7b72.Td2a8fft_total_connections
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_total_connections Tff7b72= Te6edf3NodeInfoTff7b72.Td2a8ffconns_timer
Tff7b72selfTff7b72.Td2a8fft_total_connectionsTff7b72.Td2a8ffupdate_statTb4b4b4(Tb4b4b4)

Tff7b72if Te6edf3NodeInfoTff7b72.Td2a8ffpages_timer Tff7b72== Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_total_pages Tff7b72= Te6edf3NodeTotalPagesTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Te6edf3NodeInfoTff7b72.Td2a8ffpages_timer Tff7b72= Tff7b72selfTff7b72.Td2a8fft_total_pages
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_total_pages Tff7b72= Te6edf3NodeInfoTff7b72.Td2a8ffpages_timer
Tff7b72selfTff7b72.Td2a8fft_total_pagesTff7b72.Td2a8ffupdate_statTb4b4b4(Tb4b4b4)

Tff7b72if Te6edf3NodeInfoTff7b72.Td2a8fffiles_timer Tff7b72== Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_total_files Tff7b72= Te6edf3NodeTotalFilesTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Te6edf3NodeInfoTff7b72.Td2a8fffiles_timer Tff7b72= Tff7b72selfTff7b72.Td2a8fft_total_files
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_total_files Tff7b72= Te6edf3NodeInfoTff7b72.Td2a8fffiles_timer
Tff7b72selfTff7b72.Td2a8fft_total_filesTff7b72.Td2a8ffupdate_statTb4b4b4(Tb4b4b4)

Te6edf3lxmf_addr_str Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4]Tff7b72+Ta5d6ff"Ta5d6ff LXMF Propagation Node Address is Ta5d6ff"Tff7b72+Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3RNSTff7b72.Td2a8ffDestinationTff7b72.Td2a8ffhash_from_name_and_identityTb4b4b4(Ta5d6ff"Ta5d6fflxmf.propagationTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffnodeTff7b72.Td2a8ffdestinationTff7b72.Td2a8ffidentityTb4b4b4)Tb4b4b4)
Te6edf3e_lxmf Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Te6edf3lxmf_addr_strTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4)

Te6edf3announce_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffAnnounceTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3announce_queryTb4b4b4)
Te6edf3connect_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffBrowseTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3connect_queryTb4b4b4)
Te6edf3reset_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffRst StatsTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3stats_queryTb4b4b4)

Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdisable_propagationTb4b4b4:
Te6edf3pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3t_idTb4b4b4,
Te6edf3e_nameTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffdivider1Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3e_lxmfTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffdivider1Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8fft_last_announceTb4b4b4,
Tff7b72selfTff7b72.Td2a8fft_storage_statsTb4b4b4,
Tff7b72selfTff7b72.Td2a8fft_active_linksTb4b4b4,
Tff7b72selfTff7b72.Td2a8fft_total_connectionsTb4b4b4,
Tff7b72selfTff7b72.Td2a8fft_total_pagesTb4b4b4,
Tff7b72selfTff7b72.Td2a8fft_total_filesTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffdivider1Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff5Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffBackTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3show_peer_infoTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.5Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff6Tb4b4b4, Te6edf3connect_buttonTb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.5Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff8Tb4b4b4, Te6edf3reset_buttonTb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.5Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff7Tb4b4b4, Te6edf3announce_buttonTb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)
Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3t_idTb4b4b4,
Te6edf3e_nameTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffdivider1Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8fft_last_announceTb4b4b4,
Tff7b72selfTff7b72.Td2a8fft_storage_statsTb4b4b4,
Tff7b72selfTff7b72.Td2a8fft_active_linksTb4b4b4,
Tff7b72selfTff7b72.Td2a8fft_total_connectionsTb4b4b4,
Tff7b72selfTff7b72.Td2a8fft_total_pagesTb4b4b4,
Tff7b72selfTff7b72.Td2a8fft_total_filesTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffdivider1Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff5Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffBackTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3show_peer_infoTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.5Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff6Tb4b4b4, Te6edf3connect_buttonTb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.5Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff8Tb4b4b4, Te6edf3reset_buttonTb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.5Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff7Tb4b4b4, Te6edf3announce_buttonTb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)
Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Tffea00\nTa5d6ff"Tff7b72+Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffinfoTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Tffea00\nTa5d6ffThis instance is not hosting a nodeTffea00\nTffea00\nTa5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffBackTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3show_peer_infoTb4b4b4)Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4, Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4)
Tb4b4b4]Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3pile

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffLocal Node InfoTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3widget_styleTb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffnode Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8fft_last_announceTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fft_active_linksTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fft_total_connectionsTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fft_total_pagesTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fft_total_filesTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)


Tff7b72class T56d364UpdatingTextTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4, Te6edf3titleTb4b4b4, Te6edf3value_methodTb4b4b4, Te6edf3append_textTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8fftimeout Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6fftextuiTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffanimation_intervalTa5d6ff"Tb4b4b4]Tff7b72*T79c0ff5
Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffvalue Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffvalue_method Tff7b72= Te6edf3value_method
Tff7b72selfTff7b72.Td2a8fftitle Tff7b72= Te6edf3title
Tff7b72selfTff7b72.Td2a8ffappend_text Tff7b72= Te6edf3append_text
Tff7b72selfTff7b72.Td2a8ffupdateTb4b4b4(Tb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4)

Tff7b72def Td2a8ffupdateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffvalue Tff7b72= Tff7b72selfTff7b72.Td2a8ffvalue_methodTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tff7b72selfTff7b72.Td2a8fftitleTff7b72+Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffvalueTb4b4b4)Tff7b72+Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappend_textTb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffupdate_callbackTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3loopTff7b72=Tff7b72NoneTb4b4b4, Te6edf3user_dataTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdateTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffstartedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(Tff7b72selfTff7b72.Td2a8fftimeoutTb4b4b4, Tff7b72selfTff7b72.Td2a8ffupdate_callbackTb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3was_started Tff7b72= Tff7b72selfTff7b72.Td2a8ffstarted
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72True
Tff7b72if Tff7b72not Te6edf3was_startedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_callbackTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False

Tff7b72class T56d364NetworkStatsTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4, Te6edf3parentTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8ffparent Tff7b72= Te6edf3parent

Tff7b72def Td2a8ffget_num_peersTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffnumber_of_known_peersTb4b4b4(Te6edf3lookback_secondsTff7b72=T79c0ff30Tff7b72*T79c0ff60Tb4b4b4)


Tff7b72def Td2a8ffget_num_nodesTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffnumber_of_known_nodesTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffw_heard_peers Tff7b72= Te6edf3UpdatingTextTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Ta5d6ff"Ta5d6ffHeard Peers: Ta5d6ff"Tb4b4b4, Te6edf3get_num_peersTb4b4b4, Te6edf3append_textTff7b72=Ta5d6ff"Ta5d6ff (30m)Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffw_known_nodes Tff7b72= Te6edf3UpdatingTextTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Ta5d6ff"Ta5d6ffKnown Nodes: Ta5d6ff"Tb4b4b4, Te6edf3get_num_nodesTb4b4b4)

Te6edf3pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Tff7b72selfTff7b72.Td2a8ffw_heard_peersTb4b4b4,
Tff7b72selfTff7b72.Td2a8ffw_known_nodesTb4b4b4,
Tb4b4b4]Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Te6edf3pileTb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffNetwork StatsTa5d6ff"Tb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffw_heard_peersTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffw_known_nodesTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)

Tff7b72class T56d364NetworkLeftPileTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffctrl lTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8fftoggle_listTb4b4b4(Tb4b4b4)
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffctrl gTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8fftoggle_fullscreenTb4b4b4(Tb4b4b4)
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffctrl eTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffselected_node_infoTb4b4b4(Tb4b4b4)
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffctrl pTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffreinit_lxmf_peersTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffshow_peersTb4b4b4(Tb4b4b4)
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffctrl wTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffbrowserTff7b72.Td2a8ffdisconnectTb4b4b4(Tb4b4b4)
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffctrl uTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffbrowserTff7b72.Td2a8ffurl_dialogTb4b4b4(Tb4b4b4)
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffctrl sTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffbrowserTff7b72.Td2a8ffsave_node_dialogTb4b4b4(Tb4b4b4)

Tff7b72elseTb4b4b4:
Tff7b72return Tffa657superTb4b4b4(Te6edf3NetworkLeftPileTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)


Tff7b72class T56d364NetworkDisplayTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3list_width Tff7b72= T79c0ff0.33
Te6edf3given_list_width Tff7b72= T79c0ff52

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Te6edf3g Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs

Tff7b72selfTff7b72.Td2a8ffbrowser Tff7b72= Te6edf3BrowserTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Ta5d6ff"Ta5d6ffnomadnetworkTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnodeTa5d6ff"Tb4b4b4, Te6edf3auth_identity Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffidentityTb4b4b4, Te6edf3delegate Tff7b72= Tff7b72selfTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffnode Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffbrowserTff7b72.Td2a8ffloopback Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffnodeTff7b72.Td2a8ffdestinationTff7b72.Td2a8ffhash

Tff7b72selfTff7b72.Td2a8ffknown_nodes_display Tff7b72= Te6edf3KnownNodesTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8fflxmf_peers_display Tff7b72= Te6edf3LXMFPeersTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffnetwork_stats_display Tff7b72= Te6edf3NetworkStatsTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Tff7b72selfTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffannounce_stream_display Tff7b72= Te6edf3AnnounceStreamTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Tff7b72selfTb4b4b4)
Tff7b72selfTff7b72.Td2a8fflocal_peer_display Tff7b72= Te6edf3LocalPeerTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Tff7b72selfTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffnode_info_display Tff7b72= Te6edf3NodeInfoTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Tff7b72selfTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffknown_nodes_displayTff7b72.Td2a8ffdelegate Tff7b72= Tff7b72self

Tff7b72selfTff7b72.Td2a8fflist_display Tff7b72= T79c0ff1
Tff7b72selfTff7b72.Td2a8ffleft_pile Tff7b72= Te6edf3NetworkLeftPileTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff1Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffknown_nodes_displayTb4b4b4)Tb4b4b4,
T8b949e# (urwid.PACK, self.network_stats_display),
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4, Tff7b72selfTff7b72.Td2a8fflocal_peer_displayTb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffparent Tff7b72= Tff7b72self

Tff7b72selfTff7b72.Td2a8ffleft_area Tff7b72= Tff7b72selfTff7b72.Td2a8ffleft_pile
Tff7b72selfTff7b72.Td2a8ffright_area Tff7b72= Tff7b72selfTff7b72.Td2a8ffbrowserTff7b72.Td2a8ffdisplay_widget
Tff7b72selfTff7b72.Td2a8ffright_area_width Tff7b72= T79c0ff1Tff7b72-Te6edf3NetworkDisplayTff7b72.Td2a8fflist_width

Tff7b72selfTff7b72.Td2a8ffcolumns Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(
Tb4b4b4[
T8b949e# (urwid.WEIGHT, NetworkDisplay.list_width, self.left_area),
T8b949e# (urwid.WEIGHT, self.right_area_width, self.right_area)
Tb4b4b4(Te6edf3NetworkDisplayTff7b72.Td2a8ffgiven_list_widthTb4b4b4, Tff7b72selfTff7b72.Td2a8ffleft_areaTb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff1Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffright_areaTb4b4b4)
Tb4b4b4]Tb4b4b4,
Te6edf3dividecharsTff7b72=T79c0ff0Tb4b4b4, Te6edf3focus_columnTff7b72=T79c0ff0
Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffshortcuts_display Tff7b72= Te6edf3NetworkDisplayShortcutsTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Tff7b72selfTff7b72.Td2a8ffcolumns

Tff7b72def Td2a8fftoggle_listTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fflist_display Tff7b72!= T79c0ff0Tb4b4b4:
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, Te6edf3height_amountTff7b72=T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffannounce_stream_displayTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72selfTff7b72.Td2a8fflist_display Tff7b72= T79c0ff0
Tff7b72elseTb4b4b4:
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, Te6edf3height_amountTff7b72=T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffknown_nodes_displayTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72selfTff7b72.Td2a8fflist_display Tff7b72= T79c0ff1

Tff7b72def Td2a8fftoggle_fullscreenTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3NetworkDisplayTff7b72.Td2a8ffgiven_list_width Tff7b72!= T79c0ff0Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsaved_list_width Tff7b72= Te6edf3NetworkDisplayTff7b72.Td2a8ffgiven_list_width
Te6edf3NetworkDisplayTff7b72.Td2a8ffgiven_list_width Tff7b72= T79c0ff0
Tff7b72elseTb4b4b4:
Te6edf3NetworkDisplayTff7b72.Td2a8ffgiven_list_width Tff7b72= Tff7b72selfTff7b72.Td2a8ffsaved_list_width

Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffwidgetTff7b72.Td2a8ffoptionsTb4b4b4(Ta5d6ff"Ta5d6ffgivenTa5d6ff"Tb4b4b4, Te6edf3NetworkDisplayTff7b72.Td2a8ffgiven_list_widthTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffwidgetTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffleft_areaTb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72def Td2a8ffshow_peersTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, Te6edf3height_amountTff7b72=T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8fflxmf_peers_displayTb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8fflist_display Tff7b72!= T79c0ff0Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fflist_display Tff7b72= T79c0ff0
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8fflist_display Tff7b72= T79c0ff1

Tff7b72def Td2a8ffselected_node_infoTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fflist_display Tff7b72== T79c0ff1Tb4b4b4:
Te6edf3parent Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffnetwork_display
Te6edf3selected_node_entry Tff7b72= Te6edf3parentTff7b72.Td2a8ffknown_nodes_displayTff7b72.Td2a8ffilbTff7b72.Td2a8ffget_selected_itemTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3selected_node_entry Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3selected_node_hash Tff7b72= Te6edf3selected_node_entryTff7b72.Td2a8ffbase_widgetTff7b72.Td2a8ffdisplay_widgetTff7b72.Td2a8ffsource_hash

Tff7b72if Te6edf3selected_node_hash Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3info_widget Tff7b72= Te6edf3KnownNodeInfoTb4b4b4(Te6edf3selected_node_hashTb4b4b4)
Te6edf3options Tff7b72= Te6edf3parentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, Te6edf3height_amountTff7b72=T79c0ff1Tb4b4b4)
Te6edf3parentTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3info_widgetTb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72def Td2a8fffocus_listsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffcolumnsTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff0

Tff7b72def Td2a8ffreinit_known_nodesTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffknown_nodes_display Tff7b72= Te6edf3KnownNodesTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffknown_nodes_displayTff7b72.Td2a8ffdelegate Tff7b72= Tff7b72self
Tff7b72selfTff7b72.Td2a8ffannounce_stream_displayTff7b72.Td2a8ffrebuild_widget_listTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffreinit_lxmf_peersTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fflxmf_peers_displayTb4b4b4:
Te6edf3si Tff7b72= Tff7b72selfTff7b72.Td2a8fflxmf_peers_displayTff7b72.Td2a8ffilbTff7b72.Td2a8ffget_selected_positionTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3si Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8fflxmf_peers_display Tff7b72= Te6edf3LXMFPeersTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8fflxmf_peers_displayTff7b72.Td2a8ffdelegate Tff7b72= Tff7b72self
Tff7b72selfTff7b72.Td2a8ffclose_list_dialogsTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3si Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8fflxmf_peers_displayTff7b72.Td2a8ffilbTff7b72.Td2a8ffselect_itemTb4b4b4(Te6edf3siTb4b4b4)

Tff7b72def Td2a8ffclose_list_dialogsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fflist_display Tff7b72== T79c0ff0Tb4b4b4:
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, Te6edf3height_amountTff7b72=T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffannounce_stream_displayTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3height_typeTff7b72=Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, Te6edf3height_amountTff7b72=T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffknown_nodes_displayTb4b4b4, Te6edf3optionsTb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fflocal_peer_displayTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffnode_info_displayTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffnetwork_stats_displayTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffshortcutsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffshortcuts_display

Tff7b72def Td2a8ffdirectory_change_callbackTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffannounce_stream_displayTff7b72.Td2a8ffrebuild_widget_listTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffknown_nodes_displayTff7b72.Td2a8ffno_contentTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffreinit_known_nodesTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffknown_nodes_displayTff7b72.Td2a8ffrebuild_widget_listTb4b4b4(Tb4b4b4)


Tff7b72class T56d364LXMFPeersTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8ffpeer_list Tff7b72= Te6edf3appTff7b72.Td2a8ffmessage_routerTff7b72.Td2a8ffpeers
T8b949e# self.peer_list = {}

Te6edf3g Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs

Tff7b72selfTff7b72.Td2a8ffwidget_list Tff7b72= Tff7b72selfTff7b72.Td2a8ffmake_peer_widgetsTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffilb Tff7b72= Te6edf3IndicativeListBoxTb4b4b4(
Tff7b72selfTff7b72.Td2a8ffwidget_listTb4b4b4,
Te6edf3on_selection_changeTff7b72=Tff7b72selfTff7b72.Td2a8ffnode_list_selectionTb4b4b4,
Te6edf3initialization_is_selection_changeTff7b72=Tff7b72FalseTb4b4b4,
Te6edf3highlight_offFocusTff7b72=Ta5d6ff"Ta5d6fflist_off_focusTa5d6ff"
Tb4b4b4)

Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffpeer_listTb4b4b4) Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffilb
Te6edf3widget_style Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffno_content Tff7b72= Tff7b72False
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffno_content Tff7b72= Tff7b72True
Te6edf3widget_style Tff7b72= Ta5d6ff"Ta5d6ffinactive_textTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffpile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffwarning_textTa5d6ff"Tb4b4b4, Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffinfoTa5d6ff"Tb4b4b4]Tff7b72+Ta5d6ff"Tffea00\nTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4)Tb4b4b4,
Te6edf3SelectTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffwarning_textTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffCurrently, no LXMF nodes are peeredTffea00\nTffea00\nTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffFillerTb4b4b4(Tff7b72selfTff7b72.Td2a8ffpileTb4b4b4, Te6edf3valignTff7b72=Te6edf3urwidTff7b72.Td2a8ffTOPTb4b4b4, Te6edf3heightTff7b72=Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4)

Tff7b72if Tffa657hasattrTb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff"Ta5d6ffpeer_listTa5d6ff"Tb4b4b4) Tff7b72and Tff7b72selfTff7b72.Td2a8ffpeer_listTb4b4b4:
Te6edf3pl Tff7b72= Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffpeer_listTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3pl Tff7b72= T79c0ff0
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4, Te6edf3titleTff7b72=Ta5d6fffTa5d6ff"Ta5d6ffLXMF Propagation Peers (Tffd700{Te6edf3plTffd700}Ta5d6ff)Ta5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3widget_styleTb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffupTa5d6ff" Tff7b72and Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffno_content Tff7b72or Tff7b72selfTff7b72.Td2a8ffilbTff7b72.Td2a8fffirst_item_is_selectedTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4:
Te6edf3nomadnetTff7b72.Td2a8ffNomadNetworkAppTff7b72.Td2a8ffget_shared_instanceTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72= Ta5d6ff"Ta5d6ffheaderTa5d6ff"
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffctrl xTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdelete_selected_entryTb4b4b4(Tb4b4b4)
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffctrl rTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsync_selected_entryTb4b4b4(Tb4b4b4)

Tff7b72return Tffa657superTb4b4b4(Te6edf3LXMFPeersTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)


Tff7b72def Td2a8ffnode_list_selectionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3arg1Tb4b4b4, Te6edf3arg2Tb4b4b4)Tb4b4b4:
Tff7b72pass

Tff7b72def Td2a8ffdelete_selected_entryTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3si Tff7b72= Tff7b72selfTff7b72.Td2a8ffilbTff7b72.Td2a8ffget_selected_itemTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3si Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3destination_hash Tff7b72= Te6edf3siTff7b72.Td2a8fforiginal_widgetTff7b72.Td2a8ffdestination_hash
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffmessage_routerTff7b72.Td2a8ffunpeerTb4b4b4(Te6edf3destination_hashTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffreinit_lxmf_peersTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffshow_peersTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffsync_selected_entryTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3sync_grace Tff7b72= T79c0ff10
Te6edf3si Tff7b72= Tff7b72selfTff7b72.Td2a8ffilbTff7b72.Td2a8ffget_selected_itemTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3si Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3destination_hash Tff7b72= Te6edf3siTff7b72.Td2a8fforiginal_widgetTff7b72.Td2a8ffdestination_hash
Tff7b72if Te6edf3destination_hash Tff7b72in Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffmessage_routerTff7b72.Td2a8ffpeersTb4b4b4:
Te6edf3peer Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffmessage_routerTff7b72.Td2a8ffpeersTb4b4b4[Te6edf3destination_hashTb4b4b4]
Tff7b72if Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4) Tff7b72> Te6edf3peerTff7b72.Td2a8fflast_sync_attemptTff7b72+Te6edf3sync_graceTb4b4b4:
Te6edf3peerTff7b72.Td2a8ffnext_sync_attempt Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72-T79c0ff1

Tff7b72def Td2a8ffjobTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3peerTff7b72.Td2a8ffsyncTb4b4b4(Tb4b4b4)
Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Te6edf3jobTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)

Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff0.25Tb4b4b4)

Tff7b72def Td2a8ffdismiss_dialogTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffclose_list_dialogsTb4b4b4(Tb4b4b4)

Te6edf3dialog Tff7b72= Te6edf3ListDialogLineBoxTb4b4b4(
Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffA delivery sync of all unhandled LXMs was manually requested for the selected nodeTffea00\nTa5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3dismiss_dialogTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)
Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ff!Ta5d6ff"Tb4b4b4,

Tb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffdelegate Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegate
Te6edf3bottom Tff7b72= Tff7b72self

Te6edf3overlay Tff7b72= Te6edf3urwidTff7b72.Td2a8ffOverlayTb4b4b4(Te6edf3dialogTb4b4b4, Te6edf3bottomTb4b4b4, Te6edf3alignTff7b72=Te6edf3urwidTff7b72.Td2a8ffCENTERTb4b4b4, Te6edf3widthTff7b72=Te6edf3urwidTff7b72.Td2a8ffRELATIVE_100Tb4b4b4, Te6edf3valignTff7b72=Te6edf3urwidTff7b72.Td2a8ffMIDDLETb4b4b4, Te6edf3heightTff7b72=Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4, Te6edf3leftTff7b72=T79c0ff2Tb4b4b4, Te6edf3rightTff7b72=T79c0ff2Tb4b4b4)

Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffleft_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3overlayTb4b4b4, Te6edf3optionsTb4b4b4)


Tff7b72def Td2a8ffclose_list_dialogsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffreinit_lxmf_peersTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffshow_peersTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffrebuild_widget_listTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffpeer_list Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffmessage_routerTff7b72.Td2a8ffpeers
Tff7b72selfTff7b72.Td2a8ffwidget_list Tff7b72= Tff7b72selfTff7b72.Td2a8ffmake_peer_widgetsTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffilbTff7b72.Td2a8ffset_bodyTb4b4b4(Tff7b72selfTff7b72.Td2a8ffwidget_listTb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffwidget_listTb4b4b4) Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffno_content Tff7b72= Tff7b72False
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffno_content Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffreinit_lxmf_peersTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffmake_peer_widgetsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3widget_list Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3sorted_peers Tff7b72= Tffa657sortedTb4b4b4(Tff7b72selfTff7b72.Td2a8ffpeer_listTb4b4b4, Te6edf3keyTff7b72=Tff7b72lambda Te6edf3pidTb4b4b4: Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffpn_trust_levelTb4b4b4(Te6edf3pidTb4b4b4)Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffpeer_listTb4b4b4[Te6edf3pidTb4b4b4]Tff7b72.Td2a8ffsync_transfer_rateTb4b4b4)Tb4b4b4, Te6edf3reverseTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72for Te6edf3peer_id Tff7b72in Te6edf3sorted_peersTb4b4b4:
Te6edf3peer Tff7b72= Tff7b72selfTff7b72.Td2a8ffpeer_listTb4b4b4[Te6edf3peer_idTb4b4b4]
Te6edf3trust_level Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffpn_trust_levelTb4b4b4(Te6edf3peer_idTb4b4b4)
Te6edf3pe Tff7b72= Te6edf3LXMFPeerEntryTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Te6edf3peerTb4b4b4, Tff7b72selfTb4b4b4, Te6edf3trust_levelTb4b4b4)
Te6edf3peTff7b72.Td2a8ffdestination_hash Tff7b72= Te6edf3peerTff7b72.Td2a8ffdestination_hash
Te6edf3widget_listTff7b72.Td2a8ffappendTb4b4b4(Te6edf3peTb4b4b4)

Tff7b72return Te6edf3widget_list

Tff7b72class T56d364LXMFPeerEntryTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4, Te6edf3peerTb4b4b4, Te6edf3delegateTb4b4b4, Te6edf3trust_levelTb4b4b4)Tb4b4b4:
Te6edf3destination_hash Tff7b72= Te6edf3peerTff7b72.Td2a8ffdestination_hash

Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Te6edf3g Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs

Te6edf3node_identity Tff7b72= Te6edf3RNSTff7b72.Td2a8ffIdentityTff7b72.Td2a8ffrecallTb4b4b4(Te6edf3destination_hashTb4b4b4)
Te6edf3display_str Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3destination_hashTb4b4b4)
Tff7b72if Te6edf3node_identity Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3node_hash Tff7b72= Te6edf3RNSTff7b72.Td2a8ffDestinationTff7b72.Td2a8ffhash_from_name_and_identityTb4b4b4(Ta5d6ff"Ta5d6ffnomadnetwork.nodeTa5d6ff"Tb4b4b4, Te6edf3node_identityTb4b4b4)
Te6edf3display_name Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdirectoryTff7b72.Td2a8ffalleged_display_strTb4b4b4(Te6edf3node_hashTb4b4b4)
Tff7b72if Te6edf3display_name Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3display_str Tff7b72= Tffa657strTb4b4b4(Te6edf3display_nameTb4b4b4)Tff7b72+Ta5d6ff"Tffea00\nTa5d6ff Ta5d6ff"Tff7b72+Te6edf3display_str

Te6edf3sym Tff7b72= Te6edf3gTb4b4b4[Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4]
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_unknownTa5d6ff"
Te6edf3focus_style Tff7b72= Ta5d6ff"Ta5d6fflist_focusTa5d6ff"

Te6edf3alive_string Tff7b72= Ta5d6ff"Ta5d6ffUnknownTa5d6ff"
Tff7b72if Tffa657hasattrTb4b4b4(Te6edf3peerTb4b4b4, Ta5d6ff"Ta5d6ffaliveTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3peerTff7b72.Td2a8ffaliveTb4b4b4:
Te6edf3alive_string Tff7b72= Ta5d6ff"Ta5d6ffAvailableTa5d6ff"
Tff7b72if Te6edf3trust_level Tff7b72== Te6edf3DirectoryEntryTff7b72.Td2a8ffTRUSTEDTb4b4b4:
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_trustedTa5d6ff"
Te6edf3focus_style Tff7b72= Ta5d6ff"Ta5d6fflist_focus_trustedTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_normalTa5d6ff"
Te6edf3focus_style Tff7b72= Ta5d6ff"Ta5d6fflist_focusTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3alive_string Tff7b72= Ta5d6ff"Ta5d6ffUnresponsiveTa5d6ff"
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_unresponsiveTa5d6ff"
Te6edf3focus_style Tff7b72= Ta5d6ff"Ta5d6fflist_focus_unresponsiveTa5d6ff"

Tff7b72if Te6edf3peerTff7b72.Td2a8ffpropagation_transfer_limitTb4b4b4: Te6edf3txfer_limit Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettysizeTb4b4b4(Te6edf3peerTff7b72.Td2a8ffpropagation_transfer_limitTff7b72*T79c0ff1000Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3txfer_limit Tff7b72= Ta5d6ff"Ta5d6ffNoTa5d6ff"
Tff7b72if Te6edf3peerTff7b72.Td2a8ffpropagation_sync_limitTb4b4b4: Te6edf3sync_limit Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettysizeTb4b4b4(Te6edf3peerTff7b72.Td2a8ffpropagation_sync_limitTff7b72*T79c0ff1000Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3sync_limit Tff7b72= Ta5d6ff"Ta5d6ffUnknownTa5d6ff"
Tff7b72if Te6edf3peerTff7b72.Td2a8ffpropagation_stamp_costTb4b4b4: Te6edf3sct Tff7b72= Te6edf3peerTff7b72.Td2a8ffpropagation_stamp_cost
Tff7b72elseTb4b4b4: Te6edf3sct Tff7b72= Ta5d6ff"Ta5d6ffUnknownTa5d6ff"
Tff7b72if Te6edf3peerTff7b72.Td2a8ffpropagation_stamp_cost_flexibilityTb4b4b4: Te6edf3scf Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff (flex Tffd700{Te6edf3peerTff7b72.Td2a8ffpropagation_stamp_cost_flexibilityTffd700}Ta5d6ff)Ta5d6ff"
Tff7b72elseTb4b4b4: Te6edf3scf Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3ar Tff7b72= Tffa657roundTb4b4b4(Te6edf3peerTff7b72.Td2a8ffacceptance_rateTff7b72*T79c0ff100Tb4b4b4, T79c0ff2Tb4b4b4)
Te6edf3peer_info_str Tff7b72= Te6edf3symTff7b72+Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72+Te6edf3display_strTff7b72+Ta5d6ff"Tffea00\nTa5d6ff Ta5d6ff"Tff7b72+Te6edf3alive_stringTff7b72+Ta5d6ff"Ta5d6ff, last heard Ta5d6ff"Tff7b72+Te6edf3pretty_dateTb4b4b4(Tffa657intTb4b4b4(Te6edf3peerTff7b72.Td2a8fflast_heardTb4b4b4)Tb4b4b4)
Te6edf3peer_info_str Tff7b72+Tff7b72= Ta5d6fffTa5d6ff"Tffea00\nTa5d6ff Tffd700{Te6edf3sync_limitTffd700}Ta5d6ff sync limit, Tffd700{Te6edf3txfer_limitTffd700}Ta5d6ff msg limitTa5d6ff"
Te6edf3peer_info_str Tff7b72+Tff7b72= Ta5d6fffTa5d6ff"Tffea00\nTa5d6ff Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyspeedTb4b4b4(Te6edf3peerTff7b72.Td2a8ffsync_transfer_rateTb4b4b4)Tffd700}Ta5d6ff STR, Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyspeedTb4b4b4(Te6edf3peerTff7b72.Td2a8fflink_establishment_rateTb4b4b4)Tffd700}Ta5d6ff LERTa5d6ff"
Te6edf3peer_info_str Tff7b72+Tff7b72= Ta5d6fffTa5d6ff"Tffea00\nTa5d6ff Propagation cost Tffd700{Te6edf3sctTffd700}Tffd700{Te6edf3scfTffd700}Ta5d6ff"
Te6edf3peer_info_str Tff7b72+Tff7b72= Ta5d6ff"Tffea00\nTa5d6ff Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3peerTff7b72.Td2a8ffunhandled_message_countTb4b4b4)Tff7b72+Ta5d6fffTa5d6ff"Ta5d6ff unhandled LXMs, Tffd700{Te6edf3arTffd700}Ta5d6ff% ARTa5d6ff"
Te6edf3widget Tff7b72= Te6edf3ListEntryTb4b4b4(Te6edf3peer_info_strTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3widgetTb4b4b4, Te6edf3styleTb4b4b4, Te6edf3focus_styleTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTff7b72.Td2a8ffdestination_hash Tff7b72= Te6edf3destination_hash
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4)


Tff7b72def Td2a8ffpretty_dateTb4b4b4(Te6edf3timeTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
T8b949e"""
Get a datetime object or a int() Epoch timestamp and return a
pretty string like 'an hour ago', 'Yesterday', '3 months ago',
'just now', etc
"""
Tff7b72from T7ee787datetime Tff7b72import Te6edf3datetime
Te6edf3now Tff7b72= Te6edf3datetimeTff7b72.Td2a8ffnowTb4b4b4(Tb4b4b4)
Tff7b72if Tffa657typeTb4b4b4(Te6edf3timeTb4b4b4) Tff7b72is Tffa657intTb4b4b4:
Te6edf3then Tff7b72= Te6edf3datetimeTff7b72.Td2a8fffromtimestampTb4b4b4(Te6edf3timeTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3timeTb4b4b4,Te6edf3datetimeTb4b4b4)Tb4b4b4:
Te6edf3then Tff7b72= Te6edf3time
Tff7b72elif Tff7b72not Te6edf3timeTb4b4b4:
Te6edf3then Tff7b72= Te6edf3now
Te6edf3diff Tff7b72= Te6edf3now Tff7b72- Te6edf3then
Te6edf3second_diff Tff7b72= Te6edf3diffTff7b72.Td2a8ffseconds
Te6edf3day_diff Tff7b72= Tb4b4b4(Te6edf3nowTff7b72.Td2a8ffdateTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3thenTff7b72.Td2a8ffdateTb4b4b4(Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8ffdays

Tff7b72if Te6edf3day_diff Tff7b72< T79c0ff0Tb4b4b4:
Tff7b72return Ta5d6ff'Ta5d6ff'

Tff7b72if Te6edf3day_diff Tff7b72== T79c0ff0Tb4b4b4:
Tff7b72if Te6edf3second_diff Tff7b72< T79c0ff10Tb4b4b4:
Tff7b72return Ta5d6ff"Ta5d6ffjust nowTa5d6ff"
Tff7b72if Te6edf3second_diff Tff7b72< T79c0ff60Tb4b4b4:
Tff7b72return Tffa657strTb4b4b4(Te6edf3second_diffTb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff seconds agoTa5d6ff"
Tff7b72if Te6edf3second_diff Tff7b72< T79c0ff120Tb4b4b4:
Tff7b72return Ta5d6ff"Ta5d6ffa minute agoTa5d6ff"
Tff7b72if Te6edf3second_diff Tff7b72< T79c0ff3600Tb4b4b4:
Tff7b72return Tffa657strTb4b4b4(Tffa657intTb4b4b4(Te6edf3second_diff Tff7b72/ T79c0ff60Tb4b4b4)Tb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff minutes agoTa5d6ff"
Tff7b72if Te6edf3second_diff Tff7b72< T79c0ff7200Tb4b4b4:
Tff7b72return Ta5d6ff"Ta5d6ffan hour agoTa5d6ff"
Tff7b72if Te6edf3second_diff Tff7b72< T79c0ff86400Tb4b4b4:
Tff7b72return Tffa657strTb4b4b4(Tffa657intTb4b4b4(Te6edf3second_diff Tff7b72/ T79c0ff3600Tb4b4b4)Tb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff hours agoTa5d6ff"
Tff7b72if Te6edf3day_diff Tff7b72== T79c0ff1Tb4b4b4:
Tff7b72return Ta5d6ff"Ta5d6ffYesterdayTa5d6ff"
Tff7b72if Te6edf3day_diff Tff7b72< T79c0ff7Tb4b4b4:
Tff7b72return Tffa657strTb4b4b4(Te6edf3day_diffTb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff days agoTa5d6ff"
Tff7b72if Te6edf3day_diff Tff7b72< T79c0ff31Tb4b4b4:
Tff7b72return Tffa657strTb4b4b4(Tffa657intTb4b4b4(Te6edf3day_diff Tff7b72/ T79c0ff7Tb4b4b4)Tb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff weeks agoTa5d6ff"
Tff7b72if Te6edf3day_diff Tff7b72< T79c0ff365Tb4b4b4:
Tff7b72return Tffa657strTb4b4b4(Tffa657intTb4b4b4(Te6edf3day_diff Tff7b72/ T79c0ff30Tb4b4b4)Tb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff months agoTa5d6ff"
Tff7b72return Tffa657strTb4b4b4(Tffa657intTb4b4b4(Te6edf3day_diff Tff7b72/ T79c0ff365Tb4b4b4)Tb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff years agoTa5d6ff"


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────